编译器错误堆栈跟踪

时间:2013-07-18 22:11:54

标签: compiler-errors g++

在CentOS 5.9 [gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)]上编译时。我的应用程序无法编译,出现以下错误:

/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = long long unsigned int]’:
/opt/qt64/4.7.3/include/QtCore/qendian.h:278: error: ‘bswap_64’ was not declared in this scope
/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = unsigned int]’:
/opt/qt64/4.7.3/include/QtCore/qendian.h:282: error: ‘bswap_32’ was not declared in this scope
/opt/qt64/4.7.3/include/QtCore/qendian.h: In function ‘T qbswap(T) [with T = short unsigned int]’:
/opt/qt64/4.7.3/include/QtCore/qendian.h:286: error: ‘bswap_16’ was not declared in this scope

我认为Qt 4.7.3没有任何问题,因为代码在MSVC2010上正确编译,而Fedora 9 [gcc version 4.3.0 20080428 (Red Hat 4.3.0-8) (GCC)]都是针对Qt 4.7.3进行编译而没有发生任何事故。

我的问题是,有没有办法让GCC告诉我以下任何或所有:我的代码中的最后一个位置在达到此错误之前或导致此编译器错误的完整代码跟踪或其他我可以找出如何修复代码的方法吗?

1 个答案:

答案 0 :(得分:0)

最终,该问题的解决方案是在包含路径中早先有一个名为byteswap.h的文件,该文件包含在byteswap.h的stdlib版本之前。由于该文件未包含bswap_64bswap_32bswap_16的定义,因此生成了编译器错误。

修复方法是将第三方库中的byteswap.h重命名为另一个不冲突的名称。