1.
在Windows下,在VS的工程属性中,可以查看预定义宏,例如有WIN32这样的宏。
在Linux下,可以用下面的命令查看预定义宏:
touch a.h # 创建一个空文件
cpp -dM a.h # 查看预定义宏
2.
使用c语言写程序时,通常使用大量的宏来简化程序编写,使得程序看起来更加简洁。但是有时候编译程序时,提示在宏的地方出错,如何查看宏替换后的结果呢?很简单的办法是在gcc的option里面加入-save-temps选项,gcc编译程序时会在当前目录下产生一个*.i或者*.ii的文件,查看这个文件就知道宏替换后的结果。
3.
gcc -E选项可以查看预编译结果,同样在VC下,把C/C++-》预处理器-》生成预处理文件 勾上也可以,但是你rebuild时会发现报一个Link错误说找不到stdafx.obj文件,这很正常,不要惊慌,VC只做了预处理,所以自然没有.obj文件,只不过它的连接器不应该报这个错罢了,在.cpp的同目录下可以找到对应的.i文件。展开前,建议把系统头文件注掉,不然结果文件很大很大,你不知道你想看的部分展开在哪了。
在Windows下,在VS的工程属性中,可以查看预定义宏,例如有WIN32这样的宏。
在Linux下,可以用下面的命令查看预定义宏:
touch a.h # 创建一个空文件
cpp -dM a.h # 查看预定义宏
2.
使用c语言写程序时,通常使用大量的宏来简化程序编写,使得程序看起来更加简洁。但是有时候编译程序时,提示在宏的地方出错,如何查看宏替换后的结果呢?很简单的办法是在gcc的option里面加入-save-temps选项,gcc编译程序时会在当前目录下产生一个*.i或者*.ii的文件,查看这个文件就知道宏替换后的结果。
3.
gcc -E选项可以查看预编译结果,同样在VC下,把C/C++-》预处理器-》生成预处理文件 勾上也可以,但是你rebuild时会发现报一个Link错误说找不到stdafx.obj文件,这很正常,不要惊慌,VC只做了预处理,所以自然没有.obj文件,只不过它的连接器不应该报这个错罢了,在.cpp的同目录下可以找到对应的.i文件。展开前,建议把系统头文件注掉,不然结果文件很大很大,你不知道你想看的部分展开在哪了。