问为什么声称符合 ANSI 标准的 Frobozz Magic C 编译器不接受此代码?我知道这段代码是 ANSI 标准的,因为gcc接受它。
答许多编译器支持一些非标准扩展,gcc尤其是 Frobozz Magic C 编译器。您确定被拒绝的代码不依赖于此类扩展吗?编译器可能有一个选项可以禁用扩展;如果您不确定代码是否符合 ANSI 标准,最好使用该选项。(gcc,值得称道的是,包括了一个-pedantic选项,该选项会禁用扩展并尝试强制执行严格的 ANSI 合规性。)
通过特定编译器进行实验来确定语言属性通常是个坏主意;适用的标准可能允许有变体,或者编译器可能是错误的。另请参阅问题 11.35。