C 错误:宏名称后缺少空格
我编写了以下宏:
#define m[a,b] m.values[m.rows*(a)+(b)]
但是 gcc 给了我这个错误:
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 I fix it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您不能使用
[
和]
作为宏参数的分隔符;您必须使用(
和)
。试试这个:但请注意,将宏的名称定义为现有变量的名称可能会令人困惑。您应该避免像这样隐藏名称。
You cannot use
[
and]
as delimiters for macro arguments; you must use(
and)
. Try this: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.
我不熟悉任何使用方括号的 C 预处理器语法。更改
为
它应该可以工作。
I'm not familiar with any C preprocessor syntax that uses square brackets. Change
to
And it should work.
当您在方括号中提供参数时,您不能拥有这样一个会扩展的宏。无论您在何处认为宏是一种智能文本替换工具,事实恰恰相反:宏极其迟钝且愚蠢 em> 文本替换机制。你试图用宏做的事情绝对是没有根据的 - 只需编写一个命名函数即可。
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.