使用GCC的-fms扩展是不是一个坏主意?

Ale*_*ing 11 c gcc

GCC有一个选项,-fms-extensions允许使用匿名结构成员:

struct a {
    int x;
}

struct b {
    int y;
    struct a;
}
Run Code Online (Sandbox Code Playgroud)

这允许简单地通过使用来访问x元素.这非常有用,但它似乎是由GCC模拟的Microsoft扩展.struct bb.x

使用此选项会使我的代码不那么便携,还是被认为是"安全"使用?

Ofi*_*fir 14

如果您正在寻找兼容性,那么设置松散的编译器选项永远不是一个好主意,更严格 - 更便携


R..*_*R.. 6

考虑到在2011版标准(C11)中将一个看似等效的功能(称为匿名结构和联合)添加到C中,我想说使用此功能并不是一个坏主意.MS编译器支持它,GCC和"GNU C"兼容编译器如果被要求支持它,并且符合现代标准的新编译器支持它.