|
查看Keil ARM各種數(shù)據(jù)類型占用的字節(jié)數(shù) 筆者正在學(xué)習(xí)uCOS-II,移植到ARM時考慮到數(shù)據(jù)類型的定義,但對于Keil MDK編譯器的數(shù)據(jù)類型定義還是很模糊,主要就是區(qū)分不了short int、int、long 和long int占用多少字節(jié)。為了得到一個權(quán)威的答案,改用編譯器自身得出。
一、先定義幾個變量,用于存放各數(shù)據(jù)類型的字節(jié)數(shù)。
#include<stdio.h>
unsigned char a,b,c,d,e,f,g;
main()
{
a=sizeof(char);
b=sizeof(short int);
c=sizeof(int);
d=sizeof(long);
e=sizeof(long int);
f=sizeof(float);
g=sizeof(double);
while(1);
}
二、查看各變量的存放地址。View---Watch1。

由上圖可知得出:
char占用1個字節(jié)
short int占用2字節(jié)
int占用4字節(jié)
long占用4字節(jié)
long int占用4字節(jié)
float占用4字節(jié)
double占用8字節(jié)
我們即可這樣定義宏:
typedef unsigned char uint8; // 無符號8位整型變量
typedef signed char int8; // 有符號8位整型變量
typedef unsigned short uint16; // 無符號16位整型變量
typedef signed short int16; // 有符號16位整型變量
typedef unsigned int uint32; // 無符號32位整型變量
typedef signed int int32; // 有符號32位整型變量
typedef float fp32; // 單精度浮點數(shù)(32位長度)
typedef double fp64; // 雙精度浮點數(shù)(64位長度)
|