我开始学习C语言来自Java和Javascript的背景,我想知道是否存在技术上的原因导致以下被认为是不良实践,或者它是否只是语言的演变方式?
#define bool char
#define false 0
#define true 1
#define null NULL
Run Code Online (Sandbox Code Playgroud)
无论我到哪里,我总是看到定义的变量(如果这是正确的单词)大写,我想知道这个约定是否有一个很好的技术原因?我确信这肯定已被多次询问,但我似乎无法找到答案.
他们被称为宏.是的,按照惯例,它们是ALL_UPPERCASE以避免与普通标识符的冲突,因为它们只是文本替换而不遵循语言的正常范围规则.
考虑以下:
#define foo bar
...
int foo, bar; // error: preprocessing turns this into int bar, bar;
Run Code Online (Sandbox Code Playgroud)
为了避免这样的惊喜(代码看起来不像它),我们试图保持宏不同.