gpt4 book ai didi

C++ #elif 指令被丢弃

转载 作者:行者123 更新时间:2023-11-28 03:17:05 25 4
gpt4 key购买 nike

我正在尝试创建一个基于边界的类型声明

template<class B>
struct IntDecl {

enum {
L = B::_l, U = B::_u
};
#if (L >=0 && U <=255)
typedef char Type;
#elif (L>=0&&U<=65535)
typedef unsigned int Type;
#endif

};

因此,正如您在此处看到的,将根据 LU 的值定义类型。例如

IntDecl< BOUND < 0, 65535 > >::Type i; // this should be a unsigned int 
IntDecl< BOUND < 0, 255 > >::Type i1; // this should be a char

问题是,(ii1)都被认为是 chars,换句话说 #elif 正在被丢弃。有帮助吗?为什么 #elif 没有执行?

最佳答案

预处理器传递发生在语义分析之前,枚举是一种语义构造。您需要使用模板来实现它,或者制作定义预处理器常量的 LU 宏。

关于C++ #elif 指令被丢弃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16532912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com