如何解决C ++中的编译时类型替换
说我有一个使用内置类型(例如float
)的程序,并且我希望能够向我的编译器提供命令行参数,以将所有float
声明更改为{ {1}}。
假定它们是完全相同的接口(例如,就赋值/添加/转换/等而言,可以将它们视为相同),是否可以通过编译器或构建系统(cmake / scons / etc等)进入)在指定特定标志时在编译过程中交换类型?例如,这将在确定性方面带来一些好处。
解决方法
您可以使用别名类型声明变量,该别名类型是根据预处理器定义有条件地定义的,如下所示:
#ifdef LARGEFLOATS
using MYFLOAT = long double;
#else
using MYFLOAT = double;
#endif
然后您可以使用-D
编译器标志来设置预处理程序定义,例如-DLARGEFLOATS
(对于MSVC,语法为/D
)。请注意,所有翻译单元都应具有相同的预处理程序定义。在我的示例中,这可能会导致转化范围缩小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。