2013-01-24 75 views
3

如果我想在編譯時在浮點和雙精度之間切換,我應該看看哪裏。它的樣子,如果用戶想要所有的東西都是浮動的而不是雙精度的,我可以保持這種靈活性嗎換句話說,我應該如何定義一個可以是浮點型或雙精度條件的變量?在編譯時在浮點和雙精度之間切換

+2

在編譯時或運行時? – user7116

回答

13

如果是OK,使在編譯時的開關,簡單的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

編譯兩個副本,在前面敲擊一個shell腳本重定向器,然後中提琴! – user7116

+0

@Shibli有幾種方法。使用'-D ...'編譯器選項適用於許多UNIX編譯器。在Windows上,您可以設置使用'/ D',或將'USE_DOUBLES'添加到C/C++項目屬性中的預處理器定義列表中。 – dasblinkenlight

+0

我把'-DUSE_DOUBLES = 1'直接放到我的make文件中,並且檢查了一個浮點型變量的類型。那麼,如何將這個用於make文件呢? – Shibli

1

我更喜歡在我的代碼中沒有#define s。

我會有兩個不同的頭,有兩個不同的typedef s,並允許構建選項來選擇包含哪個頭。