2009-06-04 6 views
0

최대 및 sqrt와 관련된 문제가 발생했습니다.C++ 수학 함수 문제 (Linux에서)

math.h가 포함되어 있으면 sqrt를 찾을 수 없습니다.

그래서 cmath 헤더 파일을보고 math.h가 포함되어 있지만 math.h를 열려고하면 해당 파일이 없습니다. 그래서 내 math.h 리눅스에서 누락되었습니다.

+0

리눅스에서는 거의 항상 /usr/include/math.h에서 찾을 수 있습니다. 그게 없다고 확신합니까? 이것은 많은 배포판에서 glibc 또는 glibc-headers 패키지의 일부로 설치됩니다. – jmanning2k

답변

5

죄송합니다. 답변을 찾았습니다.

난 그냥 이런 식으로 작성해야

:

표준 :

은 그러나 왜없이 작동합니까 최대 표준 : SQRT "표준 :"윈도우 OS에서를?

+2

귀하의 컴파일러에 따라 다릅니다. 일부 함수는 C 표준 라이브러리의 함수를 std 네임 스페이스에 올바르게 배치하지 않습니다. –

+3

windows.h 헤더 파일은 min과 max를 매크로로 정의한다고 생각합니다. 이 파일을 포함시키기 전에 NOMINMAX를 정의하여 비활성화 할 수 있습니다. –

4

NB : 당신이 < cmath을 #include를해야 ++ C에서 은> #include를하지 < math.h>

NB : 또한 네임 스페이스를 지정하는 것은 좋은 연습을하다

시스템은 가능성이 C 헤더를 가지고
+0

sombody가 sth을해야만하는 이유를 설명하는 것이 더 낫다고 생각합니다. – user3085931

1

파일 시스템의 한 위치에서, C++ 헤더를 다른 위치에 저장합니다. 시스템 헤더를 검색 할 디렉토리의 실제 목록을 잘 알고 있습니까? (실제로, 구현에는 시스템 헤더 파일이 필요하지 않지만 익숙한 모든 것들이 있습니다 .C++ 표준에는 명령문 #include <cmath>에 대한 요구 사항이 있지만 수행 방법에 대한 요구 사항은 없습니다.)

답변에서 Linux와 Windows의 C++ 간의 변형에 대해 이야기합니다. 이것들은 OS에 특화된 것이 아니라 구현에 특화된 것입니다. Windows에서 Visual C++를 사용하고 Linux에서 다른 것을 사용하고있을 것입니다 (VC++가 Windows에서만 실행되기 때문에). 기본 구성에서 다르게 작동 할 수 있습니다.

실제로 #include <math.h>#include <cmath>과 같아야합니다. 단, math.h는 모든 함수 이름 등을 std :: namespace로 이동해야합니다. 리눅스 C++ 시스템에서 이런 일이 일어나지 않는다면 문제가있다. 불행히도, 당신은 무슨 일이 일어나고 있는지 알아 내기 위해 거의 충분한 정보를 제공하지 못했습니다.

3

그것은 어딘가에 headerfile에 다음과 같은 성명이 작성된 때문에이 표준을 사용하지 않은 이유는 :: 이전이라고 가능 :

using namespace std; 

이 문장의 후 '표준 : :' 접두사는 더 이상 필요하지 않습니다.

호프이 명확한 것들을 희망하십시오 ...