当前位置:  开发笔记 > 编程语言 > 正文

我怎么看C/C++源文件在Visual Studio预处理后?

如何解决《我怎么看C/C++源文件在VisualStudio预处理后?》经验,为你挑选了8个好方法。

比方说,我有许多预处理指令源文件.是否有可能看到它的外观预处理器是用它做之后?



1> bk1e..:

cl.exe,Microsoft Visual C++的命令行界面,有三个不同的选项用于输出预处理文件(因此在以前的Visual C++响应中不一致):

/E:预处理到stdout(类似于GCC的-E选项)

/P:预处理到文件

/EP:在没有#line指令的情况下预处理到stdout

如果要在没有#line指令的情况下预处理文件,请组合使用/P/EP选项.


请注意,`/ P`将禁止生成obj文件.所以如果你把'/ P`选项,你可能会得到一个错误,说找不到一些obj文件,因为它实际上根本没有生成.

2> Todd Gamblin..:

大多数编译器都可以选择运行预处理器. 例如,gcc提供-E:

   -E  Stop after the preprocessing stage; do not run the compiler proper.  
       The output is in the form of preprocessed source code, which is sent
       to the standard output.

所以你可以运行:

gcc -E foo.c

如果找不到这样的选项,您也可以在机器上找到C预处理器.它通常被称为cpp,可能已经在你的道路上了.像这样调用它:

cpp foo.c

如果您需要从其他目录中包含标题,则可以将-I/path /传递给/ include/dir到其中任何一个,就像使用常规编译一样.

对于Windows,我会留给其他海报提供答案,因为我不是那里的专家.


gcc问题:http://stackoverflow.com/questions/3916979/how-to-run-the-gcc-preprocessor-to-see-how-the-source-looks-after-defines-are-e

3> Jim Buck..:

右键单击解决方案资源管理器上的文件,转到"属性".在配置属性 - > C/C++ - >预处理器下,您正在寻找"生成预处理文件".然后在解决方案资源管理器中右键单击该文件,然后选择"编译".预处理文件在输出目录(例如Release,Debug)中创建,扩展名为.i(感谢Steed的评论).


顺便说一句,该文件是在输出目录(例如`Release`,`Debug`)中创建的,扩展名为`.i`.
VS2010中的"预处理到文件".

4> ididak..:

您通常需要对预处理器的输出进行一些后处理,否则所有宏只会扩展为一个内存,这很难读取和调试.对于C代码,类似下面的内容就足够了:

gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c

对于C++代码,它实际上要困难得多.对于GCC/g ++,我发现这个Perl脚本很有用.



5> 小智..:

尝试cl /EP使用Microsoft的C++编译器.



6> dzav..:

我对Microsoft编译器一无所知,但在GCC上你可以使用:

gcc -E -P -o result.c my_file.h

如果你想看评论使用这个:

gcc -E -C -P -o result.c my_file.h

此页面提供更多选项.



7> Andreas Magn..:

在Visual Studio中,您可以使用/ P编译文件(或项目).



8> 小智..:

正如bk1e和Andreas M.所回答的那样,编译器的/ P选项将使其预处理文件.但是,在我使用VS2005和Platform Builder(用于嵌入式ARM处理器)的项目中,项目没有在对话框中显示选项(如Jim B所述)以启用该选项.

我可以手动运行CL并添加/ P,但它失败了,因为我不知道在完整构建期间Platform Builder无形地激活了所有适当的命令行选项.所以我需要了解所有这些选项.

我的解决方案是查看build.log文件,找到执行的行

CL blah-blah-blah myfile.c

我将此行复制到剪贴板."blah-blah-blah"部分包含构建选项,并且非常庞大.

回到IDE中,我右键单击myfile.c,选择"Open Build Window",然后在该窗口中粘贴了构建命令行,并添加了一个"/ P".

CL /P blah-blah-blah myfile.c

完成.生成了myfile.i文件,其中包含预处理器输出.

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有