최대 및 sqrt와 관련된 문제가 발생했습니다.C++ 수학 함수 문제 (Linux에서)
math.h가 포함되어 있으면 sqrt를 찾을 수 없습니다.
그래서 cmath 헤더 파일을보고 math.h가 포함되어 있지만 math.h를 열려고하면 해당 파일이 없습니다. 그래서 내 math.h 리눅스에서 누락되었습니다.
최대 및 sqrt와 관련된 문제가 발생했습니다.C++ 수학 함수 문제 (Linux에서)
math.h가 포함되어 있으면 sqrt를 찾을 수 없습니다.
그래서 cmath 헤더 파일을보고 math.h가 포함되어 있지만 math.h를 열려고하면 해당 파일이 없습니다. 그래서 내 math.h 리눅스에서 누락되었습니다.
죄송합니다. 답변을 찾았습니다.
난 그냥 이런 식으로 작성해야:
표준 :
은 그러나 왜없이 작동합니까 최대 표준 : SQRT "표준 :"윈도우 OS에서를?
귀하의 컴파일러에 따라 다릅니다. 일부 함수는 C 표준 라이브러리의 함수를 std 네임 스페이스에 올바르게 배치하지 않습니다. –
windows.h 헤더 파일은 min과 max를 매크로로 정의한다고 생각합니다. 이 파일을 포함시키기 전에 NOMINMAX를 정의하여 비활성화 할 수 있습니다. –
NB : 당신이 < cmath을 #include를해야 ++ C에서 은> #include를하지 < math.h>
NB : 또한 네임 스페이스를 지정하는 것은 좋은 연습을하다
시스템은 가능성이 C 헤더를 가지고sombody가 sth을해야만하는 이유를 설명하는 것이 더 낫다고 생각합니다. – user3085931
파일 시스템의 한 위치에서, C++ 헤더를 다른 위치에 저장합니다. 시스템 헤더를 검색 할 디렉토리의 실제 목록을 잘 알고 있습니까? (실제로, 구현에는 시스템 헤더 파일이 필요하지 않지만 익숙한 모든 것들이 있습니다 .C++ 표준에는 명령문 #include <cmath>
에 대한 요구 사항이 있지만 수행 방법에 대한 요구 사항은 없습니다.)
답변에서 Linux와 Windows의 C++ 간의 변형에 대해 이야기합니다. 이것들은 OS에 특화된 것이 아니라 구현에 특화된 것입니다. Windows에서 Visual C++를 사용하고 Linux에서 다른 것을 사용하고있을 것입니다 (VC++가 Windows에서만 실행되기 때문에). 기본 구성에서 다르게 작동 할 수 있습니다.
실제로 #include <math.h>
은 #include <cmath>
과 같아야합니다. 단, math.h는 모든 함수 이름 등을 std :: namespace로 이동해야합니다. 리눅스 C++ 시스템에서 이런 일이 일어나지 않는다면 문제가있다. 불행히도, 당신은 무슨 일이 일어나고 있는지 알아 내기 위해 거의 충분한 정보를 제공하지 못했습니다.
그것은 어딘가에 headerfile에 다음과 같은 성명이 작성된 때문에이 표준을 사용하지 않은 이유는 :: 이전이라고 가능 :
using namespace std;
이 문장의 후 '표준 : :' 접두사는 더 이상 필요하지 않습니다.
호프이 명확한 것들을 희망하십시오 ...
리눅스에서는 거의 항상 /usr/include/math.h에서 찾을 수 있습니다. 그게 없다고 확신합니까? 이것은 많은 배포판에서 glibc 또는 glibc-headers 패키지의 일부로 설치됩니다. – jmanning2k