MMSlite剖析1—— glbtypes.h/sysincs.h

MMS-EASE lite中,几乎所有源文件都包含了这两个头文件:glbtypes.h, sysincs.h

glbtypes.h

这一头文件主要是为了MMSlite的可移植性,它针对不同的操作系统平台,自己定义了宏

来替代C语言中的变量类型,使得能在不同的平台下编译。

MMSlite剖析1—— glbtypes.h/sysincs.h
 1 /* 多用于条件判断 */

 2 #define SD_TRUE        1

 3 #define SD_FALSE    0

 4 

 5 /* 函数是否运行成功的返回值 */        

 6 #define SD_SUCCESS     0

 7 #define SD_FAILURE     1

 8 

 9 /* 内存存储数据的模式 */

10 #define SD_BIG_ENDIAN    0

11 #define SD_LITTLE_ENDIAN    1

12 

13 /* ‘const’ 修饰符  */

14 #define SD_CONST 
通用宏定义

另外,还定义了操作系统的选择码:

MMSlite剖析1—— glbtypes.h/sysincs.h
1 #define SYSTEM_SEL_MSOFT            0x0001   //microsoft

2 #define SYSTEM_SEL_OS2        0x0008

3 #define SYSTEM_SEL_OPEN_VMS    0x0010

4 #define SYSTEM_SEL_SYS_5            0x0020

5 #define SYSTEM_SEL_SYS_BSD    0x0040

6 #define SYSTEM_SEL_QNX_C86    0x0100

7 #define SYSTEM_SEL_SYSVXWORKS    0x0800

8 #define SYSTEM_SEL_SYS_QNX4    0x1000
系统选择

然后,根据不同的系统,重新定义了C语言的变量类型:

MMSlite剖析1—— glbtypes.h/sysincs.h
 1 #if defined(_WIN32)        /* VC++, 32-Bit    */

 2 

 3 #define SD_BYTE_ORDER     SD_LITTLE_ENDIAN

 4 #define SYSTEM_SEL             SYSTEM_SEL_MSOFT

 5 #define SD_END_STRUCT    

 6 

 7 #define ST_CHAR     char    

 8 #define ST_INT       signed int        

 9 #define ST_LONG     signed long int         

10 #define ST_UCHAR   unsigned char    

11 #define ST_UINT      unsigned int        

12 #define ST_ULONG   unsigned long         

13 #define ST_VOID      void              

14 #define ST_DOUBLE  double        

15 #define ST_FLOAT    float        

16 #define ST_RET signed int    //返回码    

17 

18 /* 特定大小的数据类型*/

19 #define ST_INT8     signed char         

20 #define ST_INT16    signed short         

21 #define ST_INT32    signed long         

22 #define ST_INT64    __int64

23 #define ST_UINT8    unsigned char         

24 #define ST_UINT16   unsigned short        

25 #define ST_UINT32   unsigned long        

26 #define ST_UINT64   unsigned __int64

27 #define ST_BOOLEAN  unsigned char        

28 

29 /* 支持64位整数    */

30 #define INT64_SUPPORT

31 #define _SISCOTYPES_DEFINED

32 

33 #endif
SISCO_Types for win32
MMSlite剖析1—— glbtypes.h/sysincs.h
 1 #if defined(linux)

 2 

 3 #include <endian.h>

 4 ……   /*小端模式 or 大端模式 */

 5 

 6 #define SD_END_STRUCT 

 7 

 8 #define ST_CHAR    char    

 9 #define ST_INT      signed int        

10 #define ST_LONG    signed long int         

11 #define ST_UCHAR   unsigned char    

12 #define ST_UINT     unsigned int        

13 #define ST_ULONG   unsigned long         

14 #define ST_VOID     void              

15 #define ST_DOUBLE  double        

16 #define ST_FLOAT   float        

17 

18 #define ST_INT8        signed char         

19 #define ST_INT16      signed short         

20 #define ST_INT32      signed long         

21 #define ST_INT64      signed long long

22 #define ST_UINT8      unsigned char         

23 #define ST_UINT16    unsigned short        

24 #define ST_UINT32    unsigned long        

25 #define ST_UINT64    unsigned long long

26 #define ST_BOOLEAN  unsigned char        

27 

28 #define INT64_SUPPORT

29 #define _SISCOTYPES_DEFINED

30 

31 #endif
SISCO_Types for linux

 

sysincs.h

这个文件比较简单,就是根据不同的操作系统,把相应的标准C头文件和一些

依赖于操作系统的网络通信、进程、输入输入等相关头文件都包含进来。

这样,MMSlite可以实现在不同的平台上的移植了。

MMSlite剖析1—— glbtypes.h/sysincs.h
 1 #if defined(linux)

 2 

 3 #include <unistd.h>    

 4 #include <malloc.h>

 5 #include <stdio.h>

 6 #include <string.h>

 7 #include <time.h>

 8 #include <stdlib.h>

 9 #include <errno.h>

10 #include <sys/types.h>

11 #include <sys/stat.h>

12 #include <stdarg.h>

13 #include <fcntl.h>

14 #include <ctype.h>

15 #include <limits.h>

16 #include <sys/timeb.h>

17 #include <termio.h>

18 #include <sys/select.h>

19 #include <signal.h>

20 #include <sys/ioctl.h>

21 

22 #include <sys/socket.h>

23 #include <netdb.h>        

24 #include <netinet/in.h>        

25 #include <sys/un.h>    

26 #include <arpa/inet.h>        

27 #include <netinet/tcp.h>

28 

29 #endif
Included_Files for linux

 

你可能感兴趣的:(type)