Почему компилятор позволяет мне вызывать pow и sqrt, хотя я не включил cmath?

Я думаю, что ответ должен быть отрицательным, но я написал сегодня код, который отлично скомпилирован и показал правильные ответы, используя pow и sqrt, хотя сначала я забыл добавить
#include<cmath>
Что мне здесь не хватает?

1

Решение

Скорее всего ты #included другие заголовочные файлы, которые в свою очередь в конечном итоге #included cmath или же math.h, редактировать Чтобы ответить на ваш вопрос в комментариях: #include <iostream> мог бы сделать это, это зависит от вашей стандартной библиотеки C ++. Стандарт не гарантирует этого.

Но, если вы просто объявляете функции для себя, то вы также можете использовать их. Хотя объявление функций в std пространство имен для себя не соответствует стандарту и не может быть рекомендовано.

8

Другие решения

Заголовок включает только объявление функции; Вы можете прекрасно объявить функцию без заголовка, и она будет работать так же хорошо.

Возможно, что заголовок включен каким-то другим файлом заголовка, который вы используете, даже если вы этого не знаете.

Неявное объявление, то есть использование функции без ее объявления, является недопустимым в C ++.

3