有时我会看到这样的代码:
#define X1 (13)
#define X2 ((size_t)13)
Run Code Online (Sandbox Code Playgroud)
据我了解,(外部)()在这里是多余的。那是对的吗?
UPD:某些软件开发指南可能需要它。
例如:MISRA C:2004,规则 19.4(必需):
C 宏只能扩展为大括号初始化程序、常量、括号表达式、类型限定符、存储类说明符或 do-while-zero 构造。
然而,MISRA C:2012 有:
#define MY_NULL_2 ( void * ) 0
#define sqrt( x ) ( _BUILTIN_sqrt ( x ) )
Run Code Online (Sandbox Code Playgroud)