2012-03-27 28 views
1

我想制作一个C宏(TRAMPOLINE_BLOCK),它采用一个预定义的宏常量(TRAMPOLINE_LENGTH),并写入很多asm volatilenop指令。例如:如何复制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像你想

P99_DUPL(41, TRAMPOLINE_BLOCK) 

应该做的伎俩,让你做一些事情。你需要一个符合C99的编译器。