首页 > 解决方案 > 没有原型的静态函数(AIX 编译器允许,gcc 不允许)

问题描述

我正在尝试将大量模块从 AIX 移植到 Linux。不幸的是,AIX xlc 编译器允许您在没有原型的情况下定义静态函数并在定义之前使用它。不好,但至少你得到了正确的静态范围。无论如何,代码就在那里,如果不显式添加静态原型,我无法让它在 Linux 上编译。

那么,有什么方法可以抑制 gcc 中的“静态声明遵循非静态声明”错误(或使其成为警告而不是硬错误),或者我是否必须编辑每个模块以在任何地方添加原型重新失踪?据我了解,这是标准行为未定义的情况-因此,如果 gcc 不允许您放宽其内部标准以允许在其他地方编译的代码,这有点令人讨厌,不...?

标签: gccstaticprototypeaix

解决方案


自 2004 年以来,这一直是 GCC 中的一个硬错误。编译它的唯一选择是降级到真正旧版本的 GCC。我验证了 GCC 3.4.6 仍然可以编译它,但 GCC 4.0.3 没有。

当然,根据您的目标,让 GCC 3.4 工作可能几乎是不可能的。


推荐阅读