宏来定义类型 在C++中有一种方法可以基于预处理器标志定义一个类型吗?我有两个版本的库,一个是本机版本,另一个是构建在
除了返回和参数类型之外,这两个版本都有完全相同的函数签名。本机版本传递对象的指针,而第三个版本使用i64表示指针 我想知道be是否有办法构建一个基于编译标志使用任何库的项目。例如:宏来定义类型 在C++中有一种方法可以基于预处理器标志定义一个类型吗?我有两个版本的库,一个是本机版本,另一个是构建在,c++,c++11,build,C++,C++11,Build,除了返回和参数类型之外,这两个版本都有完全相同的函数签名。本机版本传递对象的指针,而第三个版本使用i64表示指针 我想知道be是否有办法构建一个基于编译标志使用任何库的项目。例如: //native AType* obj = fun(AnotherType* another_obj) //thirft i64 obj = fun(i64 another_obj) 我想知道是否有这样的结构: if native X is Atype* Y is AnotherType* els
//native
AType* obj = fun(AnotherType* another_obj)
//thirft
i64 obj = fun(i64 another_obj)
我想知道是否有这样的结构:
if native
X is Atype*
Y is AnotherType*
else
X is i64
Y is i64
end
//native
X obj = fun(Y another_obj)
//thirft
X obj = fun(Y another_obj)
你想要的是:
#ifdef native
typedef Atype* X
typedef AnotherType* Y
#else
typedef i64 X
typedef i64 Y
#endif
如果本机始终设置为非零值或零值,则可以改用If native。如果两个版本都能够使用相同的已知数据进行编译,因此您实际上没有在版本中定义不使用它的其他类型,而只是具有不同的函数签名,则可以使用: 否则,您必须坚持使用retro if else endif宏
using ActualType = std::conditional<IS_NATIVE, i64, AnotherType>::type;