我可以在Visual Studio 2010中设置一些选项,将枚举大小更改为 1个字节吗?禁止更改代码。我需要一些编译选项。
答案 0 :(得分:3)
您可以讨论两种逻辑上不同的大小:与给定枚举类型关联的枚举常量的大小,或者其自身类型为枚举类型的对象的大小。例如,给定
enum example { ONE, TWO };
enum example enum_variable;
第一个声明声明类型enum example
和常量ONE
和TWO
。
也许令人惊讶的是,不的常量具有类型enum example
;相反,它们的类型为int
,因此它们会消耗int
所需的任何空间(C99 6.7.2.2/3)。
另一方面,enum_variable
确实有enum example
类型,更有可能的是它实际上是您希望影响的此类型的大小。 C在那里给出了一些约束,但是指定了实现定义的特定选择(C99 6.7.2.2/4)。这有点充满希望,因为它实际上要求实现记录他们的选择,如果你向下钻取足够的话the VS 2010 docs do so。不幸的是,文档说enum
类型的变量是int
。如果要相信文档,则{2010}中enum
变量的大小不可调整。