在我的文件C ++项目中,我希望仅在满足某些条件时才包含文件。
目标代码类似于
#if condition1
#include file1.cpp
#endif
#if condition2
#include file2.cpp
#endif
我真的不知道如何解决这个问题。 #include是一个预处理器语句,而if条件必须在程序中计算。在上面的代码中没有加载任何文件,因为没有满足任何条件。如果我改为
if condition1{
#include file1.cpp
...
所有文件都包含在内,因为预处理器找到#include语句而不管if语句。
到目前为止,我还没有找到第三种可能性。
答案 0 :(得分:0)
一般的答案是,你不能以你想要的方式做你想做的事。但是,根据您的目标,可能有实现目标的方法。 (您还没有提到您使用的开发环境。)
1)您可以为包含不同cpp文件的不同版本创建不同的目标。大多数C ++环境都有在命令行中传递#define值的选项,因此您可以通过这种方式传递目标名称。然后,您可以在编译时使用#if指令来测试您正在构建的目标。
2)您可以编译和链接作为单独二进制文件而变化的cpp文件,并在运行时将它们动态加载到您的程序中。我相信在使用C#的.NET环境中这很容易,但在C ++项目中可能需要更多工作,这取决于您的环境以及您要做的事情。