今天看书的时候,无意间写出了这样的程序:
typedef long long LL;
#define LL long long
LL l = 0;编译了一下,编译器竟然没有报错,我将光标放到LL处, 上面两条定义都会显示。
此时我就纳闷了,编译器究竟用的那一个呢,
想找个验证的方法,正当思考无果的时候,
我脑中泛起了预处理的定义,
其实这样想来便很简单了,
预处理命令总是在程序代码未正式编译前就替换掉了代码中的宏定义关键字,
故,待程序经过预编译后,代码中便没有了LL这样的关键字了,那么tepedef这条语句就再也无用了。
到此,此问题编译通过的缘由基本清楚。
本文探讨了在C/C++编程中,同时使用预处理宏和类型定义导致的潜在混淆问题。作者通过一个实例展示了当预处理指令与类型定义名称相同时,编译器如何处理这类情况,并解释了预处理阶段的作用。
515

被折叠的 条评论
为什么被折叠?



