我正在尝试将大量模块从AIX移植到Linux。不幸的是,AIX xlc编译器允许您定义静态函数并在没有原型的情况下在定义之前使用它。不好,但是至少您获得了适当的静态范围。无论如何,代码都在那,如果不显式添加静态原型,我就无法在Linux上编译它。
因此,有什么方法可以抑制gcc中的“静态声明跟随非静态声明”错误(或使其成为警告而不是硬错误),还是我必须编辑每个模块以添加原型?无论他们在哪里失踪?据我了解,这是标准行为未定义的情况-因此,如果gcc不允许您放松其内部标准以允许代码在其他地方编译,那是一种讨厌的做法,不是吗? >
答案 0 :(得分:0)
自2004年以来,这一直是GCC中的一个硬错误。要编译此文件,唯一的选择是将其降级为真正的旧版GCC。我验证了GCC 3.4.6仍可以对此进行编译,但GCC 4.0.3不能。
当然,根据您的目标,使GCC 3.4正常工作可能几乎是不可能的。