#define: 为什么要使用大写字母?

6

当定义宏时(例如#define BALL),为什么人们使用大写字母?我可以像这样写#define ball,它不是大写的,但它也能工作。


8
大写字母用于宏是一种命名惯例。预处理器可以处理宏名称中的任意大小写(大写,小写,混合)。 - Klas Lindbäck
4个回答

13

这是惯例。它使得阅读和理解代码更加容易。它不是必须的,但建议使用。


5

为什么要在长变量名称中使用 _?为什么不直接将变量命名为 a 或 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);

1
欢迎 @nicael,更具体地说,宏是常量。常量通常用大写字母表示 :) - niko

4
这里有今天的另一个问题:无法解决这个“被调用的对象不是函数”C时间错误。在这个问题中,OP使用了#define time (24 * 60 * 60),并惊讶地发现time(something)无法编译。
在C语言中,几乎没有任何标准都使用大写字母,因此通过将宏定义中的所有字母都转换为大写字母,可以避免冲突。由于预处理器只进行令牌替换,因此冲突通常会产生非显而易见或难以检测的错误。

4
缺少碰撞的原因不是标准没有使用大写字母,而是该标准使用下划线前缀并将它们保留。 - Shahbaz

1
这是一种习惯用法。您可以使用大写字母和小写字母进行书写。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接