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