我一直在查看代码高尔夫,并想尝试一下这段代码:
#define D #define
添加此行后,一切正常,但是我将其扩展为:
#define D #define
D VALUE
在这里我得到了 5 个编译错误。如果我改变D
一切#define
都很好,有人可以解释一下,为什么这个代码是非法的?
注意: 我使用了 VS2008 编译器。
编辑: 在一些答案之后,我发现我需要提供编译错误列表:
- 错误 C2121:“#”:无效字符:可能是宏扩展的结果
- 错误 C2146:语法错误:缺少“;” 在标识符“VALUE”之前
- 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数
- 错误 C2144: 语法错误: 'void' 应该以 ';' 开头
- 错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数
第一个错误表明,D
不仅define
包括#
.