Проблемы во время выполнения в GCC 4.4.5 на RedHat, но отлично работает на Apple llvm 4.2? - PullRequest
1 голос
/ 12 ноября 2011

Итак, у меня есть проект, который я компилировал на компиляторе apple-darwin11-llvm-g ++ - 4.2. Проект будет компилироваться с GCC 4.4.5 на RedHat Linux, но во время выполнения происходят некоторые очень странные вещи. Нет ошибок времени выполнения, но вывод программы совершенно другой.

Я довольно ужасен с GDB, поэтому я должен представить этот проект до полуночи сегодня вечером в школу. Кто-нибудь может предложить какие-то вещи, которые приходят на ум, которые могут быть причиной этого? Может быть, есть какие-то известные различия между этими двумя компиляторами, которые могли бы дать мне где-нибудь посмотреть?

Я понимаю, что это очень расплывчато, я пытаюсь научиться использовать GDB, чтобы понять, что происходит.

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

Как обнаружил @weezbizzle - компиляторы ведут себя по-разному, и по умолчанию инициализируются переменные-члены.

1 голос
/ 12 ноября 2011

Чтобы решить эту проблему, я прошел контрольный список, предложенный @AdrianCornish:

"Если выходные данные программы не совпадают, то весьма вероятно, что вы неправильно используете язык и вызываете неопределенное поведение.очень маловероятно, что это различие в компиляторах. Вы инициализировали все переменные перед использованием? Вы правильно распределяете и используете память в пределах границ. Переменные в функции инициализируются значениями по умолчанию? "- Адриан Корниш

Благодаря этому я обнаружил, что в конструкторе была целочисленная переменная, которую я забыл инициализировать нулем.Очевидно, что llvm будет автоматически инициализировать переменные нулем, а gcc - нет.

...