2012-03-27 2 views
1

定義済みのマクロ定数(TRAMPOLINE_LENGTH)をとり、その多くをasm volatilenop命令に書き込むCマクロ(TRAMPOLINE_BLOCK)を作成します。例:この場合Cマクロを複製するには?

#ifdef __x86_64__ 
    #define TRAMPOLINE_LENGTH 41 
    #define TRAMPOLINE_BLOCK \ 
     ({ \ 
      asm volatile (\ 
        "nop\n" \ 
        ... 
      );\ 
     }) 
#else 
    #define TRAMPOLINE_LENGTH ... 
    #define TRAMPOLINE_BLOCK ... 
#endif 

TRAMPOLINE_BLOCKは41のnop説明書を持っている必要があります。私はマクロ引数とそのようなもので遊んできましたが、それはまだ働いていません。このようなマクロを書くにはどうすればいいですか?

答えて

1

自分で行うことは比較的複雑です。

P99あなたは

P99_DUPL(41, TRAMPOLINE_BLOCK) 

はトリックを行う必要がありますしたいようにあなたが何かを行うことができますマクロP99_DUPLを持っています。これにはC99準拠のコンパイラが必要です。

関連する問題