Ваша система, вероятно, имеет заголовки C в одном месте в файловой системе, а заголовки C++ - в другом. Вы знакомы с фактическим списком каталогов, ищущих заголовки системы? (Фактически, для реализации не требуется иметь файлы системных заголовков, хотя все те, с которыми я знаком, имеют. Стандарт C++ имеет требования к тому, что должно делать заявление #include <cmath>
, но не о том, как это должно быть сделано.)
В ответе вы говорите об изменениях между C++ в Linux и Windows. Это не специфичные для ОС, а скорее специфичные для реализации. Вероятно, вы используете Visual C++ в Windows и что-то еще в Linux (хотя бы потому, что VC++ работает только в Windows). Они могут работать по-разному в конфигурациях по умолчанию.
Фактически, #include <math.h>
должен быть как #include <cmath>
, за исключением того, что math.h должен переместить все его имена функций и т. Д. В пространство имен std ::. Если это не происходит в вашей системе Linux C++, есть проблема. К сожалению, вы не предоставили достаточно информации, чтобы выяснить, что происходит.
В Linux, вы почти всегда найти его на /usr/include/math.h. Вы уверены, что его там нет? Он установлен как часть пакетов glibc или glibc-заголовков на многих дистрибутивах. – jmanning2k