0

我有一个处理输入文件的 C++ 程序。我想为我的程序添加预处理能力。也就是说,输入文件看起来像:

%pre-processing section
#include <some_parent_file>
#define x y
#ifdef 0
some useless text
#endif

%actual file-contents
... lots of text ...

然后我的程序应该自动包含父文件中的文本,执行#define 内容和其他预处理。我可以在调用我的程序之前使用脚本(使用 g++ -E),但我希望能够在我的程序中执行此操作,因为这样可以提供更大的灵活性。

当“实际文件内容”部分中的行以散列开头时,“g++ -E”将假定一个预处理器指令(g++ -E 不知道我想将我的代码分成 2 个部分!)。

此外,如果我可以在“实际文件内容”部分中使用 ifdef 功能,那就太棒了。

我可以在我的程序中嵌入 C++ 代码以仅使用 gcc 编译器的预处理功能中我想要的功能吗?

4

3 回答 3

2

像Wavecpplib这样的库怎么样?

于 2011-12-01T07:22:35.950 回答
1

一个简单的可能性是使用popen从命令管道读取,它可以是cpp(或gcc -C -E)或m4

一个相关的可能性是在你的程序中嵌入一个脚本解释器,例如lua。一个相关的解决方案是将您的应用程序嵌入到PythonOcaml等解释器中。

最后,您可以使用普通的词法分析和解析技术,也许使用ANTLR并自己处理您的包含指令。您还可以将库用于配置文件,例如libconfig

于 2011-12-01T06:58:45.740 回答
-1

如果您想在编译时打开/关闭功能,最好坚持使用标准预处理器宏或使用模板。您还可以查看 Qt 如何解析标准 C++ 代码以生成附加代码。在运行时,您可以使用脚本或插件系统来实现这一点。

于 2011-12-01T07:25:01.340 回答