Mishka_Sev
@Mishka_Sev

Препроцессоры вставляют файл целиком через #include или частично?

Если первой строчкой кода записать #include <stdio.h> и использовать только одну функцию printf, то остальные тоже функции по типу scanf оттуда тоже добавятся в код программы, или только те фукнции которые использовались в программе? Препроцессоры "глупые" и пихают весь код из подключенных заголовочных файлов, или только тот, что нужен программе после вставляет компоновщик? Если да, то есть ли способ, подключить только те функции которые нужно? Чтобы минимизировать вес программы.

P.S. Т.е. если перефразировать вопрос, то он бы звучал так: можно ли выборочно подключать только необходимые функции из подключаемых библиотек?
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Препроцессоры "глупые" и пихают весь код из подключенных заголовочных файлов, или только тот, что нужен программе после вставляет компоновщик?

Да.

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

P.S. Т.е. если перефразировать вопрос, то он бы звучал так: можно ли выборочно подключать только необходимые функции из подключаемых библиотек?

Это происходит по умолчанию.

Если первой строчкой кода записать #include <stdio.h>

Загляни ради интереса в stdio.h и попробуй найти там определение (не объявление) функции printf.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы