Tuesday, March 10, 2015

C的變數長度

C語言中的變數長度在不同平台上實際上是不一定的,單看編譯平台開發者的定義。
目前已知char, int, long皆有平台差異
較好的C撰寫可想而知必須自己在宣告時使用自己定義好長度的介面,
如同 u8, u16, u32等,遇到平台不同的時,只要修改介面即可。

以我目前使用的平台來說是以下這樣,這次遇到的問題是long並非原先以為的32 bits
char  :   8 bits
short : 16 bits
int     : 32 bits
long  : 64 bits

gcc version 4.8.2 (Buildroot 2014.02)
arm-buildroot-linux-uclibcgnueabi-gcc: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped


No comments:

Post a Comment