繁体   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