Conversation
| } | ||
| ``` | ||
|
|
||
| Объявлений одной и той же функции в программе может быть сколь угодно много. Но определение должно быть только одно. Так гласит один из пунктов [правила одного определения](https://en.cppreference.com/w/cpp/language/definition) (ODR, one definition rule). Нарушение ODR приведет к ошибке компиляции. |
There was a problem hiding this comment.
В некоторых случаях привдет к ошибке линковки.
Например, есть одно объявление в main.cpp и по определению в one.cpp и two.cpp. В таком случае будет ошибка линковки
[build] duplicate symbol 'foo()' in: [build] /Users/dmitryshipilov/workspace/dummy/cpp/build/CMakeFiles/cpp_experiments.dir/two.cpp.o [build] /Users/dmitryshipilov/workspace/dummy/cpp/build/CMakeFiles/cpp_experiments.dir/one.cpp.o [build] ld: 1 duplicate symbols [build] clang++: error: linker command failed with exit code 1 (use -v to see invocation) [build] ninja: build stopped: subcommand failed.
There was a problem hiding this comment.
Мы пока не рассказывали про этапы сборки. Кроме того, мы же не говорим "я скомпилирую, а затем слинкую проект". Говорим просто "я скомпилирую проект")
There was a problem hiding this comment.
Дима прав, говорить про ошибку компиляции не совсем корректно. Предлагаю перефразировать последнее предложение. Например:
Нарушение ODR приведет к ошибке при построении проекта.
| - Импортировали стандартную библиотеку `std`. В ней содержится [функция](https://en.cppreference.com/w/cpp/io/println) `println()`, отвечающая за форматированный вывод. | ||
| - Вызвали `println()`. Она находится в пространстве имен (namespace) `std`, и мы указали его при вызове: `std::println()`. | ||
|
|
||
| Напишите функцию `to_fahrenheit()`. Она принимает вещественное число — температуру в градусах по Цельсию, и возвращает градусы по шкале Фаренгейта. {.task_text} |
There was a problem hiding this comment.
По комментарию Алдара. Нужно показать полную сигнатуру функции в условии либо сказать какой тип следует использовать для входного параметра и результата. Лучше указать тип.
Если следовать оглавлению, то сейчас должна была идти глава "Базовые концепции". Но если про все это рассказывать хоть сколько-то не поверхностно (да еще набрасывать задач), то глава получилась бы монструозной.
Поэтому было принято решение разбить ее на несколько глав. И эта глава "Простые функции" - первая из них.
Знакомим читателя с функциями. Согласно спиральному подходу, более подробное знакомство состоится еще через N глав в главе "Функции".