gpt4 book ai didi

c-preprocessor - 定义宏中的杂注

转载 作者:行者123 更新时间:2023-12-03 04:56:55 28 4
gpt4 key购买 nike

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

我正在努力实现以下目标:

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

如果存在的话,我可以接受升压解决方案(除了波)。

最佳答案

如果您使用的是 c99 或 c++0x,则有 pragma 运算符,用作

_Pragma("argument")

这相当于

#pragma argument

除非它可以在宏中使用(参见 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);

当放入gcc -E时给出

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

关于c-preprocessor - 定义宏中的杂注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3030099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com