c/c++开发分享防止使用整数进行自动转换

我正在开发一个音频应用程序(用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++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545868.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注