2009-06-15 7 views
0

Я использую компилятор cl.exe от Visual Studio 2005. Я называю это связкой/I/D и некоторыми флагами компиляции/оптимизации (пример:/Ehsc).cl.exe Разница в объектных файлах, когда/E вывод одинаковый, и флаги одинаковы

У меня есть два сценария компиляции, и оба они отличаются только флагами/I (включая каталоги разные). Все остальные флаги одинаковы. Эти сценарии создают разные объектные файлы (а не только разницу по времени, как указано ниже). Странно, что вывод/E обоих сценариев одинаковый. Это означает, что включенные файлы не вызывают разницы в объектных файлах, но опять же, откуда эта разница?

Может ли кто-нибудь выяснить, как я вижу два разных объектных файла в своей ситуации. Если включенные файлы вызывают разницу, то почему я вижу идентичный/E вывод?

PS. Объектные файлы различаются не только в метке времени, но и в разделах кода. На самом деле поведение моего финального исполняемого файла в обоих случаях отличается.

Редактировать: PSS: Я даже посмотрел на вывод/includeFiles файла cl.exe, и этот вывод идентичен. Объектные файлы, однако, отличаются не только меткой времени (на самом деле, одна на 1 КБ больше, чем другая!) ​​

ответ

0

Я предполагаю, что вы включаете заголовочные файлы, которые #define некоторые константы препроцессора, которые в свою очередь зависят от вашего кода на. Вы уже упоминали, что поведение вашего исполняемого файла отличается. Если у вас есть другой код, то, конечно, объектные файлы могут отличаться по размеру.

Если это так, не должно быть/E выходным?/E дает выход препроцессора.

Хороший вопрос! Итак, если вы используете/P (то же, что и/E, но для файла), сгенерированные файлы точно идентичны?

+0

Если это так, не должно быть/E выходным?/E выводит вывод препроцессора. – 2009-06-16 17:22:08

 Смежные вопросы

  • Нет связанных вопросов^_^