开发者

C error: missing whitespace after the macro name

I wrote the following macro:

#define m[a,b] m.values[m.rows*(a)+(b)]

However gcc gives me this error:

error: missing whitespace after the macro name

What is wrong and how do 开发者_JS百科I fix it?


You cannot use [ and ] as delimiters for macro arguments; you must use ( and ). Try this:

#define m(a,b) m.values[m.rows*(a)+(b)]

But note that defining the name of a macro as the name of an existing variable may be confusing. You should avoid shadowing names like this.


I'm not familiar with any C preprocessor syntax that uses square brackets. Change

  #define m[a,b] m.values[m.rows*(a)+(b)]

to

  #define m(a,b) m.values[m.rows*(a)+(b)]

And it should work.


You cannot have such a macro that will expand when you supply arguments in square brackets. Wherever you got the idea that macros are a smart text-substituting tool, it's just the other way round: macros are extremely obtuse and stupid text-substitution mechanism. What you're trying to do with a macro is absolutely unwarranted - just write a named function.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜