私はいくつかのエミュレーターコードを読んでいて、本当に奇妙なことに対抗しました。
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'定数の整数値を列挙します