C 非法类型升级到不受支持的类型

C 非法类型升级到不受支持的类型,c,embedded,signal-processing,C,Embedded,Signal Processing,我正在将一些通用C代码移植到一个具有24位体系结构的音频DSP上。ASIP编译器和BSP材料提供了16位和32位数学函数。支持int、long和char的基本类型,以及int16、int32、int24和int48 尽管int24和int16具有相同的基数,并且在内存中应该是几乎相同的表示形式,但当计算涉及这两种类型时,数字都会升级为双倍。不幸的是,double没有映射到任何受支持的类型 除了对数据类型和表示非常严格之外,还有什么技巧可以避免类型升级吗?请向我们展示一些相关的代码。除非您明确决定

我正在将一些通用C代码移植到一个具有24位体系结构的音频DSP上。ASIP编译器和BSP材料提供了16位和32位数学函数。支持int、long和char的基本类型,以及int16、int32、int24和int48

尽管int24和int16具有相同的基数,并且在内存中应该是几乎相同的表示形式,但当计算涉及这两种类型时,数字都会升级为双倍。不幸的是,double没有映射到任何受支持的类型


除了对数据类型和表示非常严格之外,还有什么技巧可以避免类型升级吗?

请向我们展示一些相关的代码。除非您明确决定使用浮点数,否则它们不可能升级为双精度。请张贴一个具体的,有问题的代码的例子。还有什么是“int16”等,这不是标准类型,所以请发布那些typedef。这些类型是int16\u t、int32\u t等,我忽略了它们上的“\t”。。。最近的案例是:
int32\u t variable\u 1=variable\u 2
,其中变量2是一个int16\t。我通过将这两个值都放在int16_t类型中“解决”了这个问题。更好的是,平台不应该有任何浮动的概念。