Я создаю проект совместного объекта в «IBM Rational Rhapsody 7.5» с qcc, который, в свою очередь, использует gcc.Распределение общих объектов из-за директивы препроцессора
Бинарное несоответствие является наблюдаемым, когда один и тот же код построен на двух разных машинах, имеющих точно такую же среду сборки.
После некоторых методов проб и ошибок я заметил, что несоответствие связано с директивой pre-processsor, используемой для условного выполнения кода (с использованием #ifdef). Когда директива предварительного процессора удалена и проект построен на разных машины. Оба двоичных файла точно совпадают.
Есть ли какие-либо причины для «Почему это несоответствие происходит?».
Является ли предпроцессорной директивой, зависящей от параметров машины в объектном файле, и поэтому они отражаются в исполняемом файле, что дает несоответствие? Прошу вас, пожалуйста.
Какой код находится внутри блока '# ifdef'? Невозможно сказать, в чем проблема, не зная об этом. – Mat
Каким символом является директивный тест? – Bingo
Должна быть какая-то разница между двумя средами, возможно, с типом процессора, версией ОС, версией ядра, версией компилятора или чем-то еще. Вы должны внимательно его проверить. – ciphor