如何防止不同类型的整数之间的算术运算?

时间:2014-11-18 18:12:24

标签: c compilation type-safety

我正在研究一种调试器(在C中),它处理嵌入式系统,其内存的可寻址大小为16位。这意味着在地址x处你有一个16位的值,在(x + 1)你有另一个16位的值,等等。当处理来自目标存储器的数据时,我因此必须转换目标之间的长度字节长度和主机字节长度。如果我想从目标读取10(16位)字节,我必须在调试器中分配20(8位)字节,该字节在主机上运行。

大量的错误来自我忘记进行这些转换的事实,并且我在语义上无效的算术运算,例如将主机内存地址(即在我的主机上分配的缓冲区)添加到目标字节的长度长度。这是没有意义的,并且长度应该在添加之前转换为等效的主机字节长度(有效地将长度乘以2)。

我的问题是:有什么方法可以让编译器保护我免受自己的错误?

两种长度类型都是整数。有没有办法,例如,通过类型魔术,告诉编译器这种整数不能被添加到这种其他类型的整数,例如?

谢谢!

0 个答案:

没有答案