如何使用包含路径的cpp(c预处理器)

时间:2011-03-19 12:26:01

标签: c++ c-preprocessor

我正在编写一个对C / C ++源文件进行操作的解析器。作为解析器的第一阶段,我需要使用一些已经可用的预处理器,这样我就可以使用诸如#define, #ifdef之类的指令。 对于g ++,可用工具是'cpp'(或g++ -E ...)。我有两个问题:

  1. 我的解析器是用C ++编写的,那么在其他C / C ++源文件上运行这个'cpp'的最佳方法是什么呢?它是这样的:

    system("cpp sourceFile.cpp parsed_sourceFile.cpp"); // just a pseudo code
    

    还是有更好的方法吗?

    (我只想知道对给定文件执行预处理的可能方式。system()popen()这些命令是标准的做法吗?)

  2. 如何处理源文件中包含的非标准文件?我不知道存储这些用户定义的头文件的位置。

1 个答案:

答案 0 :(得分:0)

系统是最跨平台的方式。但是如果您的代码是单平台的,那么您可以通过使用平台的本机API更好地控制子程序的执行。就像Windows中的ShellExecute一样。

有多种地方可以找到非标准的包含文件,例如与源脚本在同一目录中。这些目录通常在项目的项目和MAK文件中提到。您可以打开这些文件并查找其中提到的额外包含位置。但更简单的方法当然是向用户询问那些包含文件的位置。