1

#defineさまざまなステートメントを含む次のコードを検討してください。

 #define PUSH 0x50
 #define POP  0x58
 #define NOP  0x90
 #define JUNK __asm__(PUSH, NOP, NOP, NOP, NOP, NOP, NOP, NOP, NOP, POP)
 #define J 0.752
 #define L 27

最初のいくつかの状態は、アセンブリ命令であるいくつかの HEX 値を定義し、次にそれらのグループを定義します。

最後から 2 番目の行では、J という float を定義しています。

最後のステートメントは、L という整数を定義します。

これらのメモリ定義は定数であるため、「型なし」ですか? それがどのように機能するか想像できないので、そうではないと思います。コンパイラは float や int などの最も関連性の高い型を自動的に割り当てますか?

4

3 に答える 3

4

これらは「メモリ定義」ではありません。これらはプリプロセッサ マクロです。コンパイラ自体は、実行前にすべて (基本的にはコピー アンド ペーストによって) 置換されるため、それらを可視化することはできません。

于 2013-09-29T18:54:16.123 に答える