【发布时间】:2013-12-14 16:48:40
【问题描述】:
定义宏时(例如#define BALL)。为什么人们使用大写字母?我可以写类似#define ball 的东西。它不是大写的,但它可以工作。
【问题讨论】:
-
对宏使用大写是一种命名约定。预处理器可以处理宏名称中的任何大小写(大写、小写、混合)。
标签: c++ objective-c c macros c-preprocessor
定义宏时(例如#define BALL)。为什么人们使用大写字母?我可以写类似#define ball 的东西。它不是大写的,但它可以工作。
【问题讨论】:
标签: c++ objective-c c macros c-preprocessor
这是惯例。使阅读和理解代码更容易。这不是必需的,但建议这样做。
【讨论】:
为什么要使用_ 来表示长变量名?为什么不将变量命名为a or b,因为它易于理解和调试。
使用诸如TotalHeight 之类的变量名比简单的i 更有意义。有些人甚至会在数据类型前面加上 Int_TotalHeight 这样的前缀。它易于维护代码。
为了回答您的问题,人们使用它来加深理解。通常
1)区分变量名和宏名
#define MAX 45 // easy to understand, it is a macro
int max=45;
2) 区分函数和宏。说
#define MULT(x, y) (x) * (y)
int mult(int,int);
【讨论】:
这是今天的另一个问题:Can't figure out this "called object is not a function" C time error。在这种情况下,OP 执行了 #define time (24 * 60 * 60) 并在 time(something) 无法编译时感到惊讶。
C 中几乎没有任何标准都是大写的,因此通过将宏全部设为大写,可以避免冲突。由于预处理器只是进行令牌替换,因此冲突通常会产生不明显或未检测到的错误。
【讨论】:
_ 前缀,然后保留它们。
这是一种习俗。大写和小写都可以写。
【讨论】: