定义宏中的语法 [英] Pragma in define macro
本文介绍了定义宏中的语法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
是否有某种方法可以将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屋!
查看全文