如何查看代码预处理结果:
写了宏或宏函数,但是不知道是否达到预期,或者编译出现问题,直接从宏查看很难解决,怎么办?
-
对于VS而言,可以将 “项目属性 -> 项目配置 -> C/C++ -> 预处理器 -> 预处理到文件” 选项设置为 “是”,如下:
然后重新生成后,会在目录下生成 .i 文件 ,打开查找使用宏的地方即可。
注意:打开此选项的情况下,是连接不过的,会报错,将此选项改回去,重新编译即可。 -
对于 gcc 或 g++,使用 -E参数:
gcc -E test.c -o test.i
g++ -E test.c -o test.i
arm-himix200-linux-gcc -E test.c -o test.i
arm-himix200-linux-g++ -E test.c -o test.i
查看 test.i 即可。
Qt关键字与宏处理:
如何在Qt代码里边使用Qt关键字呢?比如我需要在宏里边使用 signals 、slots 、emit 等关键字。
实际上应该是不可能用宏实现的,为什么呢?Qt编译的时候,使用 qmake 先处理代码,qmake处理时又会调用rcc、moc、uic等进行处理。signals、slots、emit 等关键字应该是 moc 使用的,在处理完成后这些关键字就不存在了,qmake处理完成后,就是标准c++代码,可用于g++、msvc等编译器编译。
编译器编译时进行预处理,这时候才会处理宏,关键字会被替换为头文件中定义的值,一般都定义为空,所以整个处理完后,这些关键字不再存在,也不会是信号或槽,就是一般函数了,所以无法用此方法实现。