Может ли форматирование кода привести к изменению содержимого объектного файла? - PullRequest
1 голос
/ 12 марта 2010

Я запустил инструмент форматирования кода для моих файлов C ++. Предполагается вносить только изменения форматирования. Теперь, когда я построил свой код, я вижу, что размер объектного файла для некоторых исходных файлов изменился. Так как мои файлы очень большие, и инструмент изменил почти каждую строку, я не знаю, сделал ли это что-то катастрофическое. Теперь я беспокоюсь, чтобы проверить этот код для репо, поскольку это может привести к ошибке во время выполнения из-за инструмента форматирования. У меня вопрос, изменится ли размер объектного файла, если будет изменено форматирование кода?

Ответы [ 6 ]

4 голосов
/ 12 марта 2010

Краткий ответ - нет:)

3 голосов
/ 12 марта 2010

, если используется макрос ##__LINE__, возможно получение более длинных строк. Насколько отличаются размеры?

(этот макрос часто прячется в новых сообщениях и утверждает сообщения при отладке.)

3 голосов
/ 12 марта 2010

Я бы не проверил ваш код в репо без тщательной предварительной проверки (обзор, тестирование).

Чистые изменения форматирования не должны изменять размер объектного файла, если вы не выполнили отладочную сборку (в этом случае все ставки отключены). Сборка релиза должна быть не только того же размера, но и запрещать использование __DATE__, например, для вставки содержимого препроцессора, она также должна быть байтовой.

Если инструмент «переформатирования» действительно выполнил некоторые микрооптимизации для вас (кэширование повторного доступа к инвариантам в локальных переменных или отмена вашего , сделав это без необходимости), это может повлиять на выбор оптимизации компилятор делает, что может повлиять на объектный файл. Но я бы не предположил, что это так.

2 голосов
/ 12 марта 2010

простое форматирование кода не должно изменять размер объектного файла.

1 голос
/ 12 марта 2010

Попробуйте найти инструмент сравнения, который не будет заботиться об изменениях форматирования (например, возможно, "diff - ignore-all-space"), и проверьте его перед регистрацией.

1 голос
/ 12 марта 2010

Возможно, если вы скомпилируете символы отладки, так как это могло бы добавить больше информации о номере строки. Обычно это не так, как уже отмечалось.

Попробуйте сравнить объектные файлы, созданные без отладочных символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...