今天看书的时候,无意间写出了这样的程序:
typedef long long LL;
#define LL long long
LL l = 0;
编译了一下,编译器竟然没有报错,我将光标放到LL处, 上面两条定义都会显示。
此时我就纳闷了,编译器究竟用的那一个呢,
想找个验证的方法,正当思考无果的时候,
我脑中泛起了预处理的定义,
其实这样想来便很简单了,
预处理命令总是在程序代码未正式编译前就替换掉了代码中的宏定义关键字,
故,待程序经过预编译后,代码中便没有了LL这样的关键字了,那么tepedef这条语句就再也无用了。
到此,此问题编译通过的缘由基本清楚。