Any*_*orn 94 pragma stringification c-preprocessor
有没有办法在宏中用其他语句嵌入pragma语句?
我正在努力实现以下目标:
#define DEFINE_DELETE_OBJECT(type) \
void delete_ ## type_(int handle); \
void delete_ ## type(int handle); \
#pragma weak delete_ ## type_ = delete_ ## type
Run Code Online (Sandbox Code Playgroud)
如果有的话,我可以使用提升解决方案(除了wave).
Sco*_*les 108
如果您使用的是c99或c ++ 0x,则使用pragma运算符
_Pragma("argument")
Run Code Online (Sandbox Code Playgroud)
这相当于
#pragma argument
Run Code Online (Sandbox Code Playgroud)
除了可以在宏中使用(参见c99标准的6.10.9节,或c ++ 0x最终委员会草案的16.9节)
例如,
#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);
Run Code Online (Sandbox Code Playgroud)
投入时gcc -E
给予
void delete_foo_(int handle); void delete_foo(int handle);
#pragma weak delete_foo_ = delete_foo
;
Run Code Online (Sandbox Code Playgroud)
小智 5
你可以用 _Pragma("argument") 做的一件好事是用它来处理一些编译器问题,比如
#ifdef _MSC_VER
#define DUMMY_PRAGMA _Pragma("argument")
#else
#define DUMMY_PRAGMA _Pragma("alt argument")
#endif
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
37980 次 |
最近记录: |