我正在开发一个音频应用程序(用C ++编写),我有很多相互调用的函数,它们可以采用帧数(即1个单声道或2个立体声浮点样本)或原始数量的样本……
跟踪每个函数(样本或框架?)的语义以及何时通过nChannels跟踪多个或div,所以我想以某种方式做一个typedef samples_t和frames_t(到unsigned int)并让编译器帮助变得越来越困难我出去……
是否有任何简单的方法可以将从frames_t到samples_t的隐式转换在C ++中标记为错误?
除非frames_t和samples_t实际上是不同的类型。 你可以使它们包含一个包含整数的POD结构,但是对它们进行类型定义将没有任何效果。
您可以全力以赴,在boost.units中定义自己的系统,或者只使用BOOST_STRONG_TYPEDEF
宏为每种类型创建一个强类型。
你不能用typedef
来做,但是boost可以帮助你。
如果你想要的只是不可转换的类型, BOOST_STRONG_TYPEDEF
就可以做到这一点:它将允许你组成多个类型,这些类型都是unsigned
但在传递时彼此之间不可转换。
但是在您的特定应用程序中,您可能希望考虑增强单元框架,您可以在其中实际创建单元类型,其中算术的结果inheritance了正确的单位(例如, freq * time
产生无单位)。
以上就是c/c++开发分享防止使用整数进行自动转换相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/545868.html