Нет никаких негативных последствий, за исключением того, что ваш исполняемый файл может быть слишком большим. Возможно, компоновщик может лишить вас неиспользуемого кода, и это сократит количество ошибок. Вы можете использовать какой-либо инструмент просмотра объектов (otool
, objdump
, nm
и т. Д.) В выходном исполняемом файле, чтобы проверить, есть ли в вашей программе дополнительные символы.
Я использую Mac, поэтому будут некоторые различия, если вы используете стандартный набор инструментов gcc, но вот пример:
$ make
gcc -o app main.c file2.c
gcc -Wl,-dead_strip -o app_strip main.c file2.c
$ ls -l app*
-rwxr-xr-x 1 carl staff 8744 Feb 6 20:05 app
-rwxr-xr-x 1 carl staff 8704 Feb 6 20:05 app_strip
Я думаю, что в мире gcc, не принадлежащем Apple, вы бы передали -Wl,--gc-sections
вместо -Wl,-dead_strip
в моем примере. Разница в размерах двух исполняемых файлов, которую вы видите, связана с удалением дополнительной функции:
$ nm app | cut -c 20- > app.txt
$ nm app_strip | cut -c 20- > app_strip.txt
$ diff app.txt app_strip.txt
8d7
< _function2