【发布时间】:2018-01-17 02:41:01
【问题描述】:
#define int double
#define double int
int a = 5.5;
double f = 5.5;
cout << a << " " << f << endl;
下面的代码sn-p实际输出5 5.5,表示int实际表示int,double实际表示double。
我想知道这有什么意义? 我可以同时相信 int 和双重含义 int,如果定义是一个接一个地执行,或者它们中的两个改变它们的含义(如果它们都同时执行),但我找不到这种行为的正确解释。
为什么会这样?
【问题讨论】:
-
你不明白预处理器是如何工作的吗?
-
我不知道,这就是为什么我请求解释。
-
我真的没有看到关于数据类型的知识和关于宏替换中的非递归限制的知识之间的相关性,对不起。
-
FWIW,您的示例具有未定义的行为,因为它重新定义了关键字并包含标准标题。也就是说,我所知道的所有编译器都会像对待任何其他宏一样对待它。