相关疑难解决方法(0)

C中枚举的大小是多少?

我正在创建一组枚举值,但我需要每个枚举值为64位宽.如果我没记错的话,枚举通常与int的大小相同; 但是我认为我读过某个地方(至少在GCC中),编译器可以使枚举成为保持其值所需的任何宽度.那么,有可能有一个64位宽的枚举?

c enums

138
推荐指数
3
解决办法
17万
查看次数

sizeof(enum)== sizeof(int),总是吗?

sizeof(enum)== sizeof(int),总是吗?

  • 还是编译器依赖?
  • 这是错误的,因为编译器针对字长度(内存对齐)进行了优化,即y int是特定编译器上的字大小?如果我使用枚举,这是否意味着没有处理惩罚,因为它们将是字对齐的?
  • 如果我将所有返回代码放在枚举中是不是更好,因为我显然不担心它获得的值,只检查返回类型时的名称.如果是这种情况,#DEFINE会更好,因为它可以节省内存.

通常的做法是什么?如果我必须通过网络传输这些返回类型,并且必须在另一端完成某些处理,那么您更喜欢枚举/ #define/const ints.

编辑 - 只是检查网络,因为编译器不象征性地链接宏,人们如何调试,比较整数值与头文件?

来自答案 - 我在下面添加这一行,因为我需要澄清 -

"因此它是实现定义的,而sizeof(枚举)可能等于sizeof(char),即1."

  • 这是否意味着编译器检查枚举中的值范围,然后分配内存.我不这么认为,当然我不知道.有人可以解释一下"可能是什么".

c enums const c-preprocessor

58
推荐指数
4
解决办法
6万
查看次数

C/C++中的联合大小

C/C++中联合的大小是多少?它是最大数据类型的sizeof吗?如果是这样,如果联合的较小数据类型之一处于活动状态,编译器如何计算如何移动堆栈指针?

c c++ sizeof unions

41
推荐指数
4
解决办法
6万
查看次数

标签 统计

c ×3

enums ×2

c++ ×1

c-preprocessor ×1

const ×1

sizeof ×1

unions ×1