0
我想基於一個布爾變量定義我的變量類型進入我的宏函數,但我得到編譯器錯誤。基於宏函數參數的C++宏輸出類型
#define myImageType(depthImage) ((depthImage)==0 ? int : double)
int main()
{
bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}
我想基於一個布爾變量定義我的變量類型進入我的宏函數,但我得到編譯器錯誤。基於宏函數參數的C++宏輸出類型
#define myImageType(depthImage) ((depthImage)==0 ? int : double)
int main()
{
bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}
您將需要使用std::conditional
。
由於類型必須在編譯時決定,布爾也必須是常量表達式:
#include <type_traits>
#define myImageType(depthImage) \
std::conditional<depthImage, int, double>::type
int main() {
constexpr bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}
三元比較運算符不被預處理器處理。忘記這種方法。一個模板也許。 –