首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何复制C语言的宏?

如何复制C语言的宏?
EN

Stack Overflow用户
提问于 2012-03-27 20:42:24
回答 1查看 785关注 0票数 1

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

代码语言:javascript
复制
#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指令。我一直在玩宏参数之类的东西,但还没有让它起作用。我该如何着手编写这样的宏呢?

EN

回答 1

Stack Overflow用户

发布于 2012-03-27 21:21:20

自己做这件事相对比较复杂。

P99有一个宏P99_DUPL,它允许您随心所欲地执行某些操作

代码语言:javascript
复制
 P99_DUPL(41, TRAMPOLINE_BLOCK)

应该能行得通。为此,您需要一个兼容C99的编译器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9889723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档