草庐IT

c++ - 枚举 [标签] [ : type] {enum-list} [declarator] in C++ - is this legal?

我正在使用C++中的自定义枚举类型,但它没有很多值。我想尝试减小它们占用的大小,而且我听说enum类型是alwaysintegersbydefault.然后我遇到了MSDNentryonC++enumerations,发现下面的语法很有趣:enum[:type]{enum-list};果然,当我执行以下操作时,它编译出了我想要的(VS2008):enumplane:unsignedchar{xy,xz,yz};现在,您可以从我的枚举常量中看出我不需要太多空间-unsignedchar类型非常适合我的使用。但是,我不得不说,我从未在互联网上的其他地方任何地方见过这种形式——大多数人甚至似

c++ - Q_ENUM 和 Q_ENUMS 有什么区别

我刚刚发现多个示例显示了Q_ENUM和Q_ENUMS的用法,并且查看Q_ENUM的定义告诉我它包括Q_ENUMS等定义。在Q_PROPERTY、Qml/QtQuick、信号/槽、QVariants和qDebug()输出中使用枚举时,我不确定要写哪一个。似乎Q_ENUM更好,因为它是使用Q_ENUMS定义的,但我只是猜测。到底有什么区别,为什么有两个,应该首选哪个? 最佳答案 What'sNewinQt5.5说:AddedQ_ENUMtoreplaceQ_ENUMS,whichallowstogetaQMetaEnumatcompil

c++ - 空枚举 ( enum{}; ) 是可移植的吗?

classTest{enum{};...};这个空的枚举定义是可移植的吗?在gcc和msvc中编译。 最佳答案 这样的枚举在C++标准的第7条第3段中明确列为病态的。gcc不接受它。在gcc中有一个错误修复:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29018 关于c++-空枚举(enum{};)是可移植的吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

c++ - 为什么C/C++会自动将char/wchar_t/short/bool/enum类型转换为int?

因此,如果我理解得很好,积分提升提供了:char、wchar_t、bool、enum、short类型总是转换为int(或无符号整数)。然后,如果表达式中有不同的类型,将应用进一步的转换。我理解得很好吗?如果是,那么我的问题是:它为什么好?为什么?不要成为不必要的char/wchar_t/bool/enum/short吗?我的意思是例如:charc1;charc2;c1=c2;正如我之前所描述的,char总是被转换为int,所以在这种情况下,在自动转换之后它看起来像这样:intc1;intc2;c1=c2;但我不明白为什么这样好,如果我知道char类型就足以满足我的需要的话。

C++ typedef enum 和 just enum

这个问题在这里已经有了答案:WhydoyouusetypedefwhendeclaringanenuminC++?(9个回答)关闭8年前。到底有什么区别:typedefenum{something1,something2,.....somethingN}myEnum;刚刚结束enummyEnum{something1,something2,.....somethingN};我知道在第一种情况下我定义了未命名的枚举,当然,只是想知道哪种方法更好,为什么?

c++ - 狮身人面像 : Correct way to document an enum?

浏览CandC++domainsSphinx,它似乎没有对记录枚举(更不用说匿名枚举)的原生支持。截至目前,我使用cpp:type::作为枚举类型,然后是所有可能值及其描述的列表,但这似乎不是处理它的理想方式,特别是因为它使引用某些值变得很痛苦(我要么只引用类型,要么在值前面添加一个额外的标记)。有更好的方法吗?我将如何处理匿名枚举? 最佳答案 Github上的一个项目spdylay,好像有办法。头文件之一位于https://github.com/tatsuhiro-t/spdylay/blob/master/lib/include

c++ - 错误 : Expression must have integral or unscoped enum type

#include#include#include#include#includeusingnamespacestd;intmain(){floatsize;floatsumNum=0;floatmaxNum,minNum;floatmean;floattotalDev=0;floatdevSqr=0;floatstdDev;//Createauserinputsizestd::cout>size;float*temp=newfloat[size];//Gettinginputfromtheuserfor(intx=1;x>temp[x];}//Outputofthenumbersins

c++ - OCLint ASTMatcher 规则。匹配 NS_ENUM

我正在尝试创建一个匹配typedefenum和typedefNS_ENUM声明的OCLint规则,但收效甚微。我有一个Objective-C文件(TestClass.m),其中包含以下枚举声明:typedefNS_ENUM(NSInteger,TestEnum){TestEnumNone,TestEnumSome,TestEnumAll};typedefenum{othertestvalue=0,othertestvalue1,othertestvalue2}OtherTestEnum;使用此命令转储AST:clang-Xclang-ast-dump-fsyntax-onlyClass

c++ - 有没有办法让 `enum` 类型无符号?

有没有办法让enum类型无符号?以下代码向我发出有关有符号/无符号比较的警告。enumEEE{X1=1};intmain(){size_tx=2;EEEt=X1;if(t我试图强制编译器使用以下枚举的无符号底层类型:enumEEE{X1=1,XN=18446744073709551615LL//I'vetriedXN=UINT_MAX(inVisualStudio).Samewarning.};但这仍然给出了警告。将常量更改为UINT_MAX可以使其在GNUC++中按照标准正常工作。似乎是VS中的错误。感谢James的提示。 最佳答案

c++ - 没有对 <anonymous enum> 的匹配函数调用

给定:templatevoidf(T){}enum{//ifchangedto"enumE"itcompilese};intmain(){f(e);//line10}我得到:foo.cpp:Infunction‘intmain()’:foo.cpp:10:error:nomatchingfunctionforcallto‘f()’然而,如果为enum声明命名,它就会编译。为什么它不适用于匿名枚举?理想情况下,我希望它将枚举值e提升为int并实例化f(int)。 最佳答案 未命名类型根本不能用作模板参数C++03在14.3.1[tem