2013-01-24 2 views
3

컴파일 타임에 float와 double precision간에 전환하려면 어디를 봐야합니까? 사용자가 double precision 대신에 float로 모든 것을 원한다면 어떻게 유연성을 유지할 수 있을까요? 즉, 조건부로 float 또는 double precision이 될 수있는 변수를 어떻게 정의해야합니까?컴파일시 float와 double precision 간 전환

+2

컴파일 타임 또는 런타임에? – user7116

답변

13

, 간단한 typedef는 할 것 :

#ifdef USE_DOUBLES 
typedef double user_data_t; 
#else 
typedef float user_data_t; 
#endif 

코드에서 사용 user_data_t 및 설정 USE_DOUBLES 당신이 doubles를 원하는 경우 컴파일시 :

g++ -DUSE_DOUBLES=1 myprogram.cpp 
+0

두 복사본을 모두 컴파일하고, 앞에서 쉘 스크립트 리디렉터를 비웃고, 비올라! – user7116

+0

@Shibli 여러 가지가 있습니다. '-D ...'컴파일러 옵션을 사용하면 많은 UNIX 컴파일러에서 작동합니다. Windows에서는'/ D'를 사용하도록 설정하거나 C/C++ 프로젝트의 속성에있는 전 처리기 정의 목록에'USE_DOUBLES'를 추가 할 수 있습니다. – dasblinkenlight

+0

'-DUSE_DOUBLES = 1'을 make 파일에 직접 넣고 float 변수의 타입을 확인했습니다. 그렇다면 이것을 make 파일에 어떻게 사용할 수 있습니까? – Shibli

1

나는 내 코드에 #define을 갖고 싶지 않습니다.

두 개의 서로 다른 두 개의 머리글에 두 개의 서로 다른 머리글이 포함되도록 선택할 수있는 빌드 옵션을 사용할 수 있습니다.