使用宏重新定义 noinline 属性

Redefinition of noinline attribute using macros

是否可以使用 #define 重新定义 [[gnu::noinline]]__attribute__((noinline)) 等属性?

我正在努力做到这一点

#define noinline __attribute__((noinline)) \

noinline void my_function();

// Turns into
__attribute__((noinline))
void my_function();
// or 
[[gnu::noinline]]
void my_function();

我试过分解宏定义,但我似乎无法胜过 GCC。

#define noinline_ [gnu::noinline]
#define noinline [noinline_]
// and 
#define noinline_ __attribute__((
#define noinline noinline_ noinline))

Is it possible to redefine attributes such as [[gnu::noinline]] and attribute((noinline)) using #define?

你不能“重新定义”它们,即你不能让它们有别的意思。

但是您可以为它们定义宏别名,这是您通过示例实现的目标。