맥 OS X에서 tr1 사용가능한가요 ?
글쓴이: parkon / 작성시간: 토, 2013/04/27 - 11:09오전
리눅스 데탑에서 잘 돌아가는 제 코드가 맥에선 안돌아 갑니다.
제 코드의 헤드 부분은
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <cmath> #include <tr1/math.h>
이렇게 되어 있고
c++ rge.cxx (제 코드 이름) 돌리면
rge.cxx:82:22: error: no member named 'expint' in namespace 'std::tr1' * (std::tr1::expint(-(mpi2+p12p2)/Lam22) - std::tr1::expint(-(mpi2+p12m2)/Lam22))/ (4*p1*p2); ~~~~~~~~~~^ rge.cxx:82:62: error: no member named 'expint' in namespace 'std::tr1' * (std::tr1::expint(-(mpi2+p12p2)/Lam22) - std::tr1::expint(-(mpi2+p12m2)/Lam22))/ (4*p1*p2); ~~~~~~~~~~^ rge.cxx:91:8: error: use of undeclared identifier 'isnan'; did you mean 'std::isnan'? if (isnan(res) || fabs(res) > 100*fm) { ^~~~~ std::isnan /usr/include/c++/4.2.1/cmath:550:5: note: 'std::isnan' declared here isnan(_Tp __f) { return ::__gnu_cxx::__capture_isnan(__f); } ^ rge.cxx:132:11: error: use of undeclared identifier 'isnan'; did you mean 'std::isnan'? if (isnan(tmp) || fabs(tmp) > 1e4) { ^~~~~ std::isnan /usr/include/c++/4.2.1/cmath:550:5: note: 'std::isnan' declared here isnan(_Tp __f) { return ::__gnu_cxx::__capture_isnan(__f); }
이렇게 나오는 군요.
c++ --version 치면
Apple clang version 4.1 (tags/Apple/clang-421.11.66) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin12.3.0
Thread model: posix
이렇게 나오구요.
c++대신 g++로 컴파일 하면
rge.cxx:82: error: ‘expint’ is not a member of ‘std::tr1’ rge.cxx:82: error: ‘expint’ is not a member of ‘std::tr1’ rge.cxx:91: error: ‘isnan’ was not declared in this scope rge.cxx: In member function ‘double Potential::GetV(double, double)’: rge.cxx:132: error: ‘isnan’ was not declared in this scope rge.cxx: In member function ‘void Potential::Evolve2tStep1(double)’: rge.cxx:321: error: ‘isnan’ was not declared in this scope rge.cxx:347: error: ‘isnan’ was not declared in this scope rge.cxx:361: error: ‘isnan’ was not declared in this scope
이렇게 나오고
g++의 버젼은
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
입니다.
아마 맥과 리눅스 상에서 헤드 파일 인클루드 하는 방법이 살짝 다르거나
아님 tr1의 지원 여부 문제인것 같은데 도움 주시면 감사하겠습니다.
Forums:
부연설명 드리면 본문에서 expint 는
부연설명 드리면
본문에서 expint 는 exponential integral (Ei) 함수이고
include문에서
나 중 하나를 코멘트 처리해도 결과는 비슷하구요.
댓글 달기