Определение функции также неявно объявляет ее.Если вам нужно ссылаться на функцию до того, как она будет определена, вам нужно объявить ее перед использованием.
Таким образом, написание следующего также допустимо:
int sum(int x, int y) {
return x + y;
}
int main() {
std::cout << "The result is " << sum(1, 2);
return 0;
}
Если вы используете объявление водин файл, чтобы сделать функцию известной компилятору до ее определения, тогда ее определение должно быть известно во время компоновки:
main.cpp
int sum(int x, int y);
int main() {
std::cout << "The result is " << sum(1, 2);
return 0;
}
sum.cpp
int sum(int x, int y) {
return x + y;
}
Или sum
может иметь свое происхождение в библиотеке, так что вы даже не скомпилируете его самостоятельно.
Функция main
нигде не используется / не используется в вашем коде, поэтому нет необходимости добавлять объявление main
в любом месте.
До и после вашей функции main
библиотека c ++ может выполнить некоторые шаги инициализации и очистки,и вызовет вашу функцию main
.Если эта часть библиотеки будет представлена как код c ++, то она будет содержать объявление int main()
, чтобы ее можно было скомпилировать.Этот код может выглядеть следующим образом:
int main();
int __main() {
__startup_runtime();
main();
__cleanup_runtime();
}
Но тогда у вас снова возникает та же проблема с __main
, поэтому в какой-то момент больше нет c ++, и определенная функция (main
) просто представляет записьпункт вашего кода.