DSP/BIOS API並非像C語言一樣直接採用如int或char的數據類型。然而,爲了保證與其他處理器的DSP/BIOS API兼容性,DSP/BIOS定義了自己的標準數據類型。下述數據類型在std.h頭文件中定義,它們在DSP/BIOS API中被採用。當然還有其他數據類型也在這個頭文件中定義,但是並沒有被DSP/BIOS API採用。
類型 描述
Arg 同時能處理Prt和Int參數類型的類型Type capable of holding both Ptr and Int arguments
Bool 布爾類型(和C類似,包括TRUE和FALSE)Boolean value
Char 字符類型Character value
Int 帶符號的整型數Signed integer value
LgInt 大的帶符號的整型數Large signed integer value
LgUns 大的不帶符號的整型數 Large unsigned integer value
Ptr 一般指針類型Generic pointer value
String 字符串類型Zero-terminated (\0) sequence (array) of characters
Uns 無符號整型數Unsigned integer value
Void 空類型Empty type
下面是兩個處理Arg類型的兩個函數(所有DSP平臺都適用)
ArgToInt(arg) Arg轉爲Int
ArgToPtr(arg) Arg轉爲Ptr
------------------轉--------------------
DSP/BIOS中的匈牙利記法爲:
Sm開頭的表示8-bit類型;
Md開頭的表示16-bit類型;
Lg開頭的表示32-bit類型;
Int表示有符號整型;
Uns表示無符號類型;
Bits表示按bit計算類型;
我的建議:在定義上述類型的變量時,相應的變量名用上面的開頭表示;或者養成以下習慣(我的習慣),僅供參考:
定義字符變量用cH開頭:如,char cHdiag;
定義整型變量用iN開頭:如,int iNaddnum;
定義無符號整型變量用uiN開頭。
定義符號字符變量用ucH開頭。
定義長整型變量用lO開頭。等等。
開始使用時可能有點彆扭,但時間一長,一旦成爲習慣,就會受益匪淺。
在std.h等文件中定義了一些常量和數據類型(原文引用),如下:
typedef char SmInt;
typedef short MdInt;
#if defined(_6x_)
typedef int LgInt;
#else
typedef long LgInt;
#endif
typedef unsigned char SmUns;
typedef unsigned short MdUns;
#if defined(_6x_)
typedef unsigned LgUns;
#else
typedef unsigned long LgUns;
#endif
typedef unsigned char SmBits;
typedef unsigned short MdBits;
#if defined(_6x_)
typedef unsigned LgBits;
#else typedef unsigned long LgBits;
#endif
typedef int Int;
typedef long int Long;
typedef short int Short;
typedef char Char;
#define Void voidtypedef char * String;
#if defined(_29_) || defined(_50_) || defined(_54_) || defined(_55_) || defined(_6x_)
typedef unsigned Uns;
#else
typedef unsigned long Uns;
#endif
#if defined(_80_)
typedef int Bool;
#elif defined(_W32_)
typedef long Bool;
#else
typedef MdUns Bool;
#endif
typedef SmBits Byte;
typedef void *Ptr;
typedef Int (*Fxn)();
#if defined(_80_) || defined(_SUN_) || defined(_67_)
typedef float Float;
#else
typedef double Float; #endif
#ifndef NULL
#define NULL 0
#endif
#ifndef TRUE
#define FALSE ((Bool)0)
#define TRUE ((Bool)1)
#endif
#ifdef _LINT_
#define __inline
#else
#define __inline inline
#endif
#endif
#if !defined(inline) && !defined(__cplusplus) && !defined(_TI_)
#define inline __inline
#endif
本文引用TI的std.h文件