我曾在许多不同的嵌入式系统上工作过。他们都使用typedef
s (或#defines
)来表示诸如UINT32
.
这是一种很好的技术,因为它可以让程序员了解类型的大小,并使您更加意识到溢出等的机会。
但是在某些系统上,您知道编译器和处理器在项目的整个生命周期内都不会改变。
那么,什么会影响您创建和执行项目特定类型的决定呢?
编辑我想我设法失去了我的问题的要点,也许真的是两个。
使用嵌入式编程,您可能需要特定大小的接口类型,并且还需要处理受限资源,例如 RAM。这是无法避免的,但您可以选择使用编译器中的基本类型。
对于其他一切,类型的重要性较低。
您需要小心不要导致溢出,并且可能需要注意寄存器和堆栈的使用。这可能会导致你UINT16
,UCHAR
。但是,使用诸如UCHAR
可以添加编译器“绒毛”之类的类型。因为寄存器通常较大,一些编译器可能会添加代码以强制将结果转换为类型。
我++;可以变成
添加 REG,1 与 REG,0xFF这是不必要的。
所以我认为我的问题应该是:-
考虑到嵌入式软件的限制,对于一个需要很多人参与的项目来说,最好的策略是什么——并不是所有的人都具有相同的经验水平。