Проблема математических функций C ++ (под Linux) - PullRequest
0 голосов
/ 04 июня 2009

У меня проблемы с max и sqrt

Если я включу math.h, он не найдет sqrt.

Итак, я просматриваю файл заголовка cmath, и внутри него содержится math.h, но когда я пытаюсь открыть math.h, он говорит, что файл не найден. ПОЭТОМУ, я думаю, что мой math.h отсутствует в Linux.

Ответы [ 4 ]

5 голосов
/ 04 июня 2009

Извините, я нашел ответ.

Мне просто нужно написать это так:

станд :: макс станд :: SQRT

Но почему он работает без "std ::" в ОС Windows?

4 голосов
/ 04 июня 2009

Примечание: в C ++ вы должны #include не #include

NB: также указание пространства имен является хорошей практикой

3 голосов
/ 04 июня 2009

Возможно, причина того, что вам не нужно было использовать std :: ранее, заключается в том, что где-то в заголовочном файле было написано следующее утверждение:

using namespace std;

После этого оператора префикс 'std ::' больше не нужен.

Надеюсь, это прояснилось ...

1 голос
/ 04 июня 2009

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

В своем ответе вы говорите о различиях между C ++ в Linux и Windows. Они не зависят от ОС, а зависят от реализации. Вы, вероятно, используете Visual C ++ в Windows и что-то еще в Linux (хотя бы потому, что VC ++ работает только в Windows). Они могут работать по-другому в конфигурациях по умолчанию.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...