Han*_*esh 4 c macros c-preprocessor
我写了以下宏:
#define m[a,b] m.values[m.rows*(a)+(b)]
Run Code Online (Sandbox Code Playgroud)
但是gcc给了我这个错误:
error: missing whitespace after the macro name
Run Code Online (Sandbox Code Playgroud)
有什么问题,我该如何解决?
你不能使用[和]作为宏参数的分隔符; 你必须使用(和).试试这个:
#define m(a,b) m.values[m.rows*(a)+(b)]
Run Code Online (Sandbox Code Playgroud)
但请注意,将宏的名称定义为现有变量的名称可能会令人困惑.你应该避免像这样遮蔽名字.
我不熟悉使用方括号的C预处理程序语法。更改
#define m[a,b] m.values[m.rows*(a)+(b)]
Run Code Online (Sandbox Code Playgroud)
至
#define m(a,b) m.values[m.rows*(a)+(b)]
Run Code Online (Sandbox Code Playgroud)
它应该工作。