将#includes扩展为C ++的文本文件

时间:2014-02-10 06:56:58

标签: c++ c-preprocessor

是否可以扩展c ++文件的#include行,可能使用 C 预处理器,这样我就可以在没有#includes的情况下读取扩展文件,而是使用#include d?

的文件

具体一点,如果我有

fileA.cpp:

#include "fileB.H"

int main()
{
//do whatever
return(0);
}

fileB.H:

#include "fileC.H"
//Some lines of code

fileC.H

//Some other lines of code

输出:

//Some other lines of code
//Some lines of code

int main()
{
//do whatever
return(0);
}

基本上,复制粘贴包含在一个大型文本/ C ++代码文件中的文件,而不编译?

如果我使用相关的-I<Directory containing files to include>运行cpp,那么我得到一个长文本文件,而不仅仅是代码,它会给出传递给编译器的内容(呃!)

1 个答案:

答案 0 :(得分:4)

对于gcc和clang,您可以使用-E选项(see similar answer)输出预处理器输出而不进行编译。

要同时显示示例输出中的注释,可以添加-CC和-P标志:

clang++ -E -CC -P fileA.cpp

All of the processor options for -E can be found on here, on gcc.gnu.org.

  

-CC 不要放弃评论,包括在宏扩展期间。这就像-C,除了宏中包含的注释也被传递   到扩展宏的输出文件。

     

-P 禁止在预处理器的输出中生成线标记。在运行预处理器时,这可能很有用   不是C代码的东西,将被发送到一个程序   可能会被线标者混淆。

对于Visual C ++编译器,您可以使用/ E. See this SO answer.