【问题标题】:How to duplicate a C macro?如何复制 C 宏?
【发布时间】:2012-03-27 12:42:24
【问题描述】:

我想制作一个 C 宏 (TRAMPOLINE_BLOCK),它采用预定义的宏常量 (TRAMPOLINE_LENGTH) 并写入那么多 asm volatile nop 指令。例如:

#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 指令。我一直在玩宏参数等,但还没有让它工作。我将如何编写这样的宏?

【问题讨论】:

    标签: c gcc macros c-preprocessor


    【解决方案1】:

    自己做比较复杂。

    P99 有一个宏 P99_DUPL,可以让你做你想做的事情

     P99_DUPL(41, TRAMPOLINE_BLOCK)
    

    应该可以解决问题。为此,您需要一个符合 C99 标准的编译器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 2021-09-15
      • 2012-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      相关资源
      最近更新 更多