Mat*_*ner 8 c gcc clang plan-9
如何-fplan9-extensions在GCC中激活匿名结构/联合行为以在Clang中工作?
当使用指定的初始化程序时,我收到错误分配给匿名成员,而我没有得到免费转换为匿名成员的类型.这些都在GCC下工作,并激活了上述扩展.
typedef struct {int hi;} Embedded;
typedef struct {Embedded;} Encapsulating;
Encapsulating poo = {.hi = 3;};
error: field designator 'hi' does not refer to any field in type 'Encapsulating'
void takes_embedded(Embedded *m);
takes_embedded(&poo);
warning: incompatible pointer types passing 'Encapsuating *' to parameter of type 'Embedded *'
Run Code Online (Sandbox Code Playgroud)
以下是如何-fplan9-extensions在Clang中获取功能:
某些-fplan9-extensions功能(struct { Embedded; }部件)已在-fms-extensions参数下可用,但不支持此类匿名成员的指定初始化程序.另一部分在精神上类似于GCC的__attribute__((transparent_union))功能,Clang已经支持.