|
查看Keil ARM各種數(shù)據(jù)類(lèi)型占用的字節(jié)數(shù) 筆者正在學(xué)習(xí)uCOS-II,移植到ARM時(shí)考慮到數(shù)據(jù)類(lèi)型的定義,但對(duì)于Keil MDK編譯器的數(shù)據(jù)類(lèi)型定義還是很模糊,主要就是區(qū)分不了short int、int、long 和long int占用多少字節(jié)。為了得到一個(gè)權(quán)威的答案,改用編譯器自身得出。
一、先定義幾個(gè)變量,用于存放各數(shù)據(jù)類(lèi)型的字節(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個(gè)字節(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; // 無(wú)符號(hào)8位整型變量
typedef signed char int8; // 有符號(hào)8位整型變量
typedef unsigned short uint16; // 無(wú)符號(hào)16位整型變量
typedef signed short int16; // 有符號(hào)16位整型變量
typedef unsigned int uint32; // 無(wú)符號(hào)32位整型變量
typedef signed int int32; // 有符號(hào)32位整型變量
typedef float fp32; // 單精度浮點(diǎn)數(shù)(32位長(zhǎng)度)
typedef double fp64; // 雙精度浮點(diǎn)數(shù)(64位長(zhǎng)度)
|