定义宏中的语法 [英] Pragma in define macro

查看:107
本文介绍了定义宏中的语法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有某种方法可以将pragma语句与其他语句一起嵌入宏?

Is there some way to embed pragma statement in macro with other statements?

我正在尝试实现以下目标:

I am trying to achieve something like:

#define DEFINE_DELETE_OBJECT(type)                      \
    void delete_ ## type_(int handle);                  \
    void delete_ ## type(int handle);                                                \
    #pragma weak delete_ ## type_ = delete_ ## type

如果存在的话,我可以使用增强解决方案(保存波形).

I am okay with boost solutions (save for wave) if one exists.

推荐答案

如果您使用的是c99或c ++ 0x,则有编译指示符,用作

If you're using c99 or c++0x there is the pragma operator, used as

_Pragma("argument")

等效于

#pragma argument

除了可以在宏中使用(请参阅c99标准的6.10.9节或c ++ 0x最终委员会草案的16.9节)

except it can be used in macros (see section 6.10.9 of the c99 standard, or 16.9 of the c++0x final committee draft)

例如,

#define STRINGIFY(a) #a
#define DEFINE_DELETE_OBJECT(type)                      \
    void delete_ ## type ## _(int handle);                  \
    void delete_ ## type(int handle);                   \
    _Pragma( STRINGIFY( weak delete_ ## type ## _ = delete_ ## type) )
DEFINE_DELETE_OBJECT(foo);

放入gcc -E给予时

void delete_foo_(int handle); void delete_foo(int handle);
#pragma weak delete_foo_ = delete_foo
 ;

这篇关于定义宏中的语法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆