我正在阅读一些仿真器代码,并且已经发现了一些奇怪的东西:
switch (reg){
case 'eax':
/* and so on*/
}
这怎么可能?我以为您只能switch使用整数类型。是否有一些宏观骗局?
int,因此是合法的。但是,多字符常量的值是实现定义的,因此该代码可能无法在其他编译器上正常工作。例如,eax可能是0x65,0x656178,0x65617800,0x786165,0x6165,或别的东西。
'eax' != 'ebx'当然,只要,它就只会使您的一个或两个示例失败。尽管可能在某些地方实际上采用了某些代码*(int*)("eax") == 'eax',因此大多数示例都失败了。
'eax'可能比较等于'ebx'或等于'ax',而switch语句将无法按预期工作。
'eax',它枚举常量整数值