私はいくつかのエミュレーターコードを読んでいて、本当に奇妙なことに対抗しました。
switch (reg){
case 'eax':
/* and so on*/
}
これはどのようにして可能ですか?switch
整数型でしかできないと思いました。マクロの仕掛けはありますか?
int
、正当です。ただし、複数文字定数の値は実装定義であるため、コードは別のコンパイラーで期待どおりに機能しない可能性があります。例えば、eax
あるかもしれない0x65
、0x656178
、0x65617800
、0x786165
、0x6165
、それ以外か何か。
'eax' != 'ebx'
もちろんと同じくらい長く、1つまたは2つの例でのみ失敗します。実際にはを想定*(int*)("eax") == 'eax'
しているため、ほとんどの例で失敗するコードが存在する可能性があります。
'eax'
と等しい'ebx'
またはと比較'ax'
し、switchステートメントが意図したとおりに機能しない場合があります。
'eax'
定数の整数値を列挙します