여기에서 내가 무엇을 보는지 확신 할 수 없습니다. 아래의 테스트 결과는 OS X 10.5.8을 실행하는 이전 PowerMac G5의 결과입니다. 빅 엔디안 PowerPC cpu에서 테스트를 계속합니다. 컴파일러는 GCC 5.4이며 MacPorts에서 제공합니다.오류 : 'log2'는 '표준'의 구성원이 아닙니다.
테스트 프로그램은 다음과 같습니다. 컴파일하면 오류가 발생합니다. error: 'log2' is not a member of 'std'
.
$ cat test.cxx
#include <cmath>
int main(int argc, char* argv[])
{
double d = std::log2(2.3456789f);
return 0;
}
Is std::log2() an extension or C++ standard?에 따르면, std::log2
는 사용할 수 있습니다.
왜 프로그램을 컴파일하지 못합니까?
$ /opt/local/bin/g++-mp-5 --version
g++-mp-5 (MacPorts gcc5 5.4.0_0) 5.4.0
Copyright (C) 2015 Free Software Foundation, Inc.
$ /opt/local/bin/g++-mp-5 -std=c++11 test.cxx -o test.exe
test.cxx: In function 'int main(int, char**)':
test.cxx:4:16: error: 'log2' is not a member of 'std'
double d = std::log2(2.3456789f);
^
test.cxx:4:16: note: suggested alternative:
In file included from /usr/include/math.h:26:0,
from /opt/local/include/gcc5/c++/cmath:44,
from test.cxx:1:
/usr/include/architecture/ppc/math.h:431:15: note: 'log2'
extern double log2(double);
^
이
때문에 기존의 하드웨어 관련이있을 수 있습니다 : C++11 cmath functions not in std namespace for android NDK w/gcc-4.8 or clang 3.4. Android가 다른 플랫폼이라는 것을 알고 있습니다.
이제 MacPorts 발행물 추적기에서 열 수 있습니다 : Issue 53226: PowerMac, GCC 5.4 and "error: 'std::log2' has not been declared".
GCC의 문제 추적기에 현재 열려 : Issue 79017: Old PowerMac G5, MacPorts GCC 5.4, C++11 and "std::log2 has not been declared"
당신이 맥 감안할 때, 당신은 4.2 헤더를 사용하지 않는 확인하십시오. –
@BaummitAugen - */.../opt/local/include/gcc5/C++/cmath' *는 예상 헤더를 사용하고 있습니까? – jww
참고로, 나는 OSX 10.11.4 (Intel i7)에서 g ++ - 6 (Homebrew를 통해 설치됨)과 clang ++ 모두에서 컴파일을 시도하고 잘 실행되었다. – fedepad