这个关于头文件和源文件的答案说:
编译器会看到一个大的源(.cpp)文件及其正确包含的标头.源文件是将编译为目标文件的编译单元.
有可能以某种方式查看这个大的.cpp(.c)文件吗?如果是,那么如何在Linux(gcc)和Windows(VisualStudio)平台上执行此操作.
PS:我已经试过在Visual Studio/P选项(关于Solution Explorer中,转到属性的文件上单击右键;配置属性- > C/C++ - >预处理器- >预处理到文件- > [YES/P] )但是我已经获得了几个*.i文件,这些文件看起来不像c ++(可能是c ++,但有许多模板,内存分配定义等).我所指的答案是谈论"一个大的.cpp文件".所以我假设只有#include指令会被相应的文件替换,或者我错了,*.i输出是我被要求的?
在Linux上使用-Egcc选项.它会将"大"源代码打印到stdout,允许您将其重定向到文件.
在Visual Studio上,使用以下选项:/Estdout或/P打印到文件.
顺便提一下,您的问题已经分开询问了:
这些*.i文件正是您所要求的,因为*.i每个文件都有一个*.cpp文件.如果您将单个源文件提供给GNU编译器,您将获得相同的结果gcc -E.一个*.i文件是一个*.cpp与所有的文件包括完全展开.我想你的C++文件直接或通过其他包含间接包含标准库头文件,所以你在预处理文件中有很多可怕的代码.尽管如此,它仍然是C++,它比你在源代码中的C++更"纯粹".Visual Studio预处理器还包含#line对其输出的指令.编译器将使用它们来报告编译错误的正确行号.你可以用它来抑制它们/EP.
要检查一切是否正确,您可以创建一个空项目并使用一些自己的源文件和头文件,而不包括任何标准库或第三方标头.
| 归档时间: |
|
| 查看次数: |
659 次 |
| 最近记录: |