如何獲得GCC中的-fplan9-extensions
在Clang中工作的匿名結構/聯合行爲?等同於Clang中的-fplan9擴展?
我在使用指定的初始值設定項時給匿名成員分配錯誤,而且我沒有將自由角色轉換爲匿名成員的類型。這兩個工作都在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 *'
我認爲最好不要編寫無效的代碼C. –
您不能使用特定於編譯器的擴展,然後詢問「它是如何在其他編譯器上不起作用的?」你需要堅持使用GCC或者將你的代碼重寫爲標準C. –
@Chris Lutz:我的印象是,clang的目標是成爲GCC的一個主要替代品。它當然接受這個選項,但對此沒有任何關係。 –