我发现了几种不同风格的宏 对于头文件,如下所示:
#define __HEADER_H__
#define _HEADER_H_
#define _header_h
简单的宏:
#define SOMEMACRO something
#define somemacro something
#define SOME_MACRO something
带参数的宏:
#define func_macro() something() // arguments not used?
#define FUNC_MACRO something()
#define func_macro something()
所以我的问题是:它们中的一些是好还是坏?宏名称是否有“默认”样式?
答案 0 :(得分:3)
使用全部大写字母绝对是常量的方法。但是,我建议不要使用函数宏。我建议编写内联函数。在某些情况下使用的函数宏可能导致逻辑错误。例如:
#define FUNC(x) x + x
int main() {
int a = 1;
b = FUNC(a++);
}
结果未定义,很可能不是预期的结果。
答案 1 :(得分:2)
根据Indian Hill C style guide, as amended at UofT, UW, and elsewhere:
<强> 11。命名约定(第13页):
#define常量应该在所有CAPS中。
...
许多宏“`函数''都在所有CAPS中。某些宏(例如getchar和putchar)属于小写,因为它们也可能作为函数存在。只有当宏的行为类似于函数调用时,才能接受小写宏名称,也就是说,它们只对其参数进行一次评估,并且不为命名参数赋值。有时,即使参数只被评估一次,也不可能编写一个行为类似函数的宏。
另请阅读pdf文件第14页第12章(常数)和第13章(宏)。
他们的命名惯例是恕我直言,非常合理。