【问题标题】:c++ macro output type based on the macro function argumentc++ 基于宏函数参数的宏输出类型
【发布时间】:2023-03-26 21:10:01
【问题描述】:

我正在尝试根据进入我的宏函数的布尔变量来定义我的变量类型,但出现编译器错误。

#define myImageType(depthImage) ((depthImage)==0 ? int : double)

int main()
{
bool inMilimeter = true;
myImageType(inMilimeter) pixelIntensity;
}

【问题讨论】:

  • 预处理器不处理三元比较运算符。忘记那种方法。可能是一个模板。

标签: c++ macros variable-types


【解决方案1】:

您需要使用std::conditional

由于类型必须在编译时确定,布尔值也必须是常量表达式:

#include <type_traits>

#define myImageType(depthImage) \
std::conditional<depthImage, int, double>::type

int main() {
    constexpr bool inMilimeter = true;
    myImageType(inMilimeter) pixelIntensity;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2012-07-22
    相关资源
    最近更新 更多