Может ли «acos» работать только с заголовком cmath?

У меня есть следующая строка: const int PI(acos(-1.00));

Я могу скомпилировать программу без ошибок, хотя я не использую cmath в заголовке, а только stdafx.h, iostream и fstream.

Каждый веб-сайт, который я просматриваю на acos, является частью заголовка cmath.

Когда я вычисляю PI, я получаю 3.

В чем причина того, что acos работает без заголовка cmath?


person Lukali    schedule 07.01.2018    source источник
comment
Имея эту небольшую информацию, можно только догадываться, но вполне возможно, что некоторые файлы заголовков, используемые вашим приложением, по очереди включают cmath (возможно, для некоторых простых математических вычислений, таких как sqrt или hypot).   -  person njuffa    schedule 07.01.2018
comment
На самом деле больше ничего нет. Основное - это просто объявление и инициализация 3 переменных и возврат 0. Всего менее 12 строк кода.   -  person Lukali    schedule 07.01.2018
comment
Пробовали ли вы заглянуть в stdafx.h, чтобы узнать, что включает ? Кстати, если вся ваша программа меньше 12 строк, вы можете опубликовать ее в вопросе.   -  person Bob__    schedule 07.01.2018
comment
@Lukali Какие файлы заголовков будут включены, в свою очередь, в файлы заголовков, используемые вашим приложением, будет зависеть от цепочки инструментов, платформы ОС и любых переключателей компиляции, переданных компилятору.   -  person njuffa    schedule 07.01.2018


Ответы (1)


Visual Studio включает cmath в iostream, поэтому он работает. Какое-то разочарование, в Интернете нет информации о том, как iostream может состоять из выбранных библиотек компилятора.

person Lukali    schedule 07.01.2018