c++ - 预处理器开关确定类的版本

标签 c++ visual-studio linker c-preprocessor

我有一个类有两种可能的实现,具体取决于预处理器开关。我处理这个问题的方法是创建“src\CompSwitch1\class.h”和“src\CompSwitch2\class.h”。在我的标准包含文件中,我使用

   #ifdef CompSwitch1
        #include "CompSwitch1\class.h"
    #elif CompSwitch2
        #include "CompSwitch2\class.h"
    #else
        #error "Specify CompSwitch1 or CompSwitch2"
    #endif

这适用于我的大多数需要两个版本的类(class)。但是,其中一个出现链接器错误(lnk2019:未解析的外部符号)。我使用的是 MS Visual Studio 2005 和 2008,它们都出现了。

在 .h 文件的顶部,我针对预处理器选项进行了测试。 此外,虽然我只是为了简洁起见引用了 .h 文件,但在相应的目录中,每个文件都有一个 .cpp 文件。

最佳答案

听起来您可能已经包含其中一个类的头文件,但链接了另一个类的目标文件,或者两者都没有

关于c++ - 预处理器开关确定类的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126705/

相关文章:

c++ - 为什么 const 变量不能通过引用传递?

c++ - QT 和 OpenCascade 内存不足

python - 我的 Py_NoneStruct 符号(python、boost.python)在哪里?

c++ - 使用模板类 boost 序列化

c++ - 指向 C++ 中内联 __asm block 的指针

c++ - C++中全局变量和静态成员变量动态初始化的实现

c - 内联汇编跳转错误

c++ - VS2013中的SFINAE

c++ - 链接器和 dll 的 MSVC++ 2008 问题

c++ - 如何解决--------undefined reference to `__chkstk_ms' --------on mingw