这是场景:
“baselogger.h”包含API,我在两种情况下(案例A和案例B,A对应于1.cpp,B对应于2.cpp)实现了这些API,然后如何使用不同的cpp编写宏以编译不同的案例在“baselogger.h”中实现API?
最佳答案
您不必为此使用宏。相反,在情况A中可以编译并与1.cpp链接,在情况B中可以编译并与2.cpp链接。
CMake的例子:
option (CASE_A "Descriptive description" ON)
if (CASE_A)
target_sources(target_name PRIVATE 1.cpp)
else ()
target_sources(target_name PRIVATE 2.cpp)
endif ()
安装了选件,您可能会遇到其他情况。这对于将API移植到不同系统通常很有用。但是基于宏的解决方案也可以工作:
// 1.cpp
#ifdef MACRO_CASE_A
// case A implementation for baselogger.h
#endif
// 2.cpp
#ifndef MACRO_CASE_A
// case B implementation for baselogger.h
#endif
用这种方法,总是简单地编译两个源。
关于c++ - C++如何使用相同的.h并在使用相同的.h时选择不同的.cpp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63626759/