Подтвердить что ты не робот

Должно ли определение встроенных функций С++ быть в одном файле?

Я определил функцию show() как указано в файле заголовка ex.h и определении функции внутри ex.cpp. Я ожидал, что это даст мне ошибку, поскольку компилятор не будет знать, что заменить, где вызывается функция show(). Но поскольку я использую IDE, он работал нормально. Как это могло случиться?

И BTW, когда я попытался скомпилировать его вручную, дал мне ошибку, что используется show(), но не определен.

4b9b3361

Ответ 1

  Обязательно, чтобы определение функции (часть между {...}) было помещено в заголовочный файл, если только функция не используется только в одном файле .cpp.
В частности, если вы поместите определение встроенной функции в файл .cpp и вызовете его из другого файла .cpp, вы получите ошибку "unresolved external" от компоновщика.

[читать далее]

Ответ 2

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

Некоторые компиляторы имеют функции для оптимизации всей программы сразу (Оптимизация всей программы или Оптимизация времени соединения). Эти компиляторы могут встроить функцию, даже если она определена в другом .cpp файле.

Ответ 3

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