例如:
#define FOO(x) (printf(x))
Run Code Online (Sandbox Code Playgroud)
和
#define FOO(x) {printf(x)}
Run Code Online (Sandbox Code Playgroud)
似乎两者都可以用于预处理,但哪个更好?
如果您将宏视为表达式,请使用该()
表单.
如果您将其视为命令(并且从不作为表达式),则使用该{}
表单.或者更确切地说,do{}while(0)
在以下关键字附近使用时,使用具有较少替代危险的表格if
:
#define FOO(x) do { \
printf(x); \
} while(0)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
235 次 |
最近记录: |