Ceil работает без включения <cmath>в Visual C ++ 2010 - PullRequest
2 голосов
/ 27 ноября 2011

Я только что написал простую программу на C ++ в Visual Studio 2010 и использую функцию ceil. Но я забыл включить <cmath> и включил только <iostream>. Удивительно, но мой код успешно скомпилирован и работает без ошибок. Я читаю книгу по C ++, и в ней четко сказано, что для использования функции ceil необходимо включить <cmath> или <math.h>. Почему это происходит? Кто-нибудь может мне объяснить? Спасибо!

Ответы [ 2 ]

1 голос
/ 27 ноября 2011

Технически говоря, реализациям разрешено автоматически включать любой заголовок в системные заголовки. Но это определяется реализацией.

В некоторых случаях <cmath> уже включено, в других - нет - то же самое относится ко всем другим стандартным заголовкам.

Этот вопрос возник по этому вопросу: https://stackoverflow.com/questions/7632926/is-this-a-c-program-or-c-program-how-to-decide

Кроме этого, возможно, что оно может быть косвенно включено другими включениями.

1 голос
/ 27 ноября 2011

Заголовок косвенно включается из другого (косвенно) включенного заголовка.

Чтобы узнать, какой из них, включите «сохранить предварительно обработанный источник» (/P) из опций проекта и проверьте полученный (* .i) файл

Обновление Только что обнаружил, что VS2010 переименовал соответствующий параметр:

enter image description here

...