포트 _controlfp (_CW_DEFAULT, 0xffffffff)에 연결하려고합니다. WIN32에서 Mac OS X/Intel. 어떻게 지시 사항을 포팅 할 수 있는지 전혀 모르겠군요. 그리고 당신 은요? 감사!MacOSX에서 C++의 배정 밀도를 설정하는 방법은 무엇입니까?
답변
section 8.6 of Gough's Introduction to GCC은 x86 FLDCW 명령어를 보여줍니다. 하지만 필요한 이유를 알려 주시면 도움이됩니다. 복식이 IEEE-754 64 비트 복식이되도록하려면 가장 쉬운 방법은 -msse -mfpmath = sse를 사용하여 컴파일하는 것입니다.
어떤 정밀 요소를 제어하고 있습니까? Microsoft's Website 따르면
:
_control87
함수 얻고 부동 소수점 제어 워드를 설정한다. 부동 소수점 제어 워드를 사용하면 프로그램에서 부동 소수점 수학 패키지의 정밀도, 반올림 및 무한대 모드를 변경할 수 있습니다._control87
을 사용하여 부동 소수점 예외를 마스크하거나 마스크 해제 할 수도 있습니다. mask 값이 0이면_control87
은 부동 소수점 제어 단어를 가져옵니다. 마스크가 0이 아니면, 제어 워드에 대한 새로운 값이 설정됩니다 : 마스크에서 켜져있는 (1과 같은) 모든 비트에 대해 new의 해당 비트가 제어 단어를 업데이트하는 데 사용됩니다. 즉,fpcntrl = ((fpcntrl & ~mask) | (new & mask))
여기서 fpcntrl은 부동 소수점 제어 단어입니다.
키워드 "라이브러리"에 유의하십시오. 이 함수는 라이브러리를 조작합니다.이 라이브러리는 Mac에 없을 수 있습니다.
나는 다음과 같은 제안 :
- 제어 의 부동 소수점 칩 맥 자신
- 또는 맥
- 에 대한 마이크로 소프트 컴파일러를 사용하거나하는 부동 소수점 컨트롤을 이동하는 방법을 찾을 수 귀하의 프로그램에 더 많은 일반 지점.
내가 줄 수있는 최선의 조언은 표준 및 플랫폼 또는 라이브러리 관련 문제를 최대한 줄인 상태로 유지하는 것입니다. 플랫폼 특정 기능을 포함하는 기능의 경우 해당 기능을 자체 소스 파일/번역 단위로 옮깁니다. 이러한 기능의 사본을 각 플랫폼에 대해 하나씩 작성하십시오. 링커가 사용할 사람을 결정하도록하십시오.
행운을 비네.