簡體   English   中英

C++ 中的編譯時類型替換

[英]Compile-time Type Replacement in C++

假設我有一個使用內置類型(例如float的程序,並且我希望能夠向編譯器提供命令行參數以將所有float聲明更改為fixed_point<8,8>

假設它們是完全相同的接口(例如,它們可以在賦值/加法/轉換/等方面被相同對待),是否有辦法通過編譯器或構建系統(cmake/scons/等)進行交換指定特定標志時編譯期間的類型? 例如,這將有助於確定性方面的一些好處。

您可以使用別名類型聲明變量,該類型是基於預處理器定義有條件地定義的,如下所示:

#ifdef LARGEFLOATS
using MYFLOAT = long double;
#else
using MYFLOAT = double;
#endif

然后您可以使用-D編譯器標志來設置預處理器定義,例如-DLARGEFLOATS (對於 MSVC,語法為/D )。 需要注意所有翻譯單元看到相同的預處理器定義。 在我的示例中,這可能會導致縮小轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM