Extending这个问题,我想使用我的枚举值,因为它们“应该”是,
#include <stdio.h>
enum E{ A, B, C } ;
#define inc(enVal) (*((int*)&enVal))++
int main()
{
E t = A ;
inc( t ) ;
printf( "t %d\n", t ) ;
}
现在,嗯,t
是枚举类型 E 的变量,我有一个宏 inc
可以增加 t
的值1,
那么这个宏(可能还有其他类似的用于标志检查的宏)是否会比仅使用 int t
效率低得多?
最佳答案
不,它不会降低效率。然而,这将是令人难以置信的、可怕的、错误的。请永远不要。
哦,特别是因为枚举的支持类型是未定义的,而且在某些编译器上它们实际上可能被编译为小于 int
的大小。
关于c++ - 这是低效的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6310551/