所以我有一个项目,我一直在编译apple-darwin11-llvm-g ++ - 4.2编译器。该项目将在RedHat linux上使用GCC 4.4.5进行编译,但运行时会发生一些非常奇怪的事情。没有运行时错误,但程序输出完全不同。
我对GDB非常糟糕,所以我需要在今晚午夜之前将这个项目提交给学校。任何人都可能会提出一些可能引起这种情况的想法吗?也许这两个编译器之间的一些已知差异可以让我看看?
我意识到这很模糊,我正在努力学习使用gdb,这样我就能弄明白发生了什么。
答案 0 :(得分:1)
为了解决这个问题,我查看了@AdrianCornish建议的清单:
“如果程序输出不一样,那么你很可能误用了语言并导致了未定义的行为。编译器中的差异很小。你在使用前初始化了所有变量吗?你是否在边界内正确分配和使用内存。函数中的变量是否初始化为默认值?“ - 阿德里安康沃尔
通过这个我发现有一个整数变量,我忘记在我的构造函数中初始化为零。显然,llvm会自动将变量初始化为零,而gcc则不会。
答案 1 :(得分:1)
由@weezbizzle发现 - 编译器的行为不同,一个默认初始化成员变量。