zoukankan      html  css  js  c++  java
  • C语言项目常用的头文件声明及相关宏定义

     1 /*
     2  *
     3  * base_include.h
     4  *
     5  * 基本头文件引用声明。
     6  *
     7  * 本代码支持win32平台和linux平台。
     8  *
     9  * Copyright (c)2012,lizhi<ibox>
    10  *
    11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
    12  *
    13  *
    14  */
    15 
    16 
    17 #ifndef __INCLUDE_BASE_INCLUDE_H
    18 #define __INCLUDE_BASE_INCLUDE_H
    19 
    20 
    21 /*
    22  * Macro开关
    23  */
    24 #ifndef WIN32
    25 #define WIN32
    26 #endif
    27 
    28 /*
    29  * Common header file
    30  */
    31 #include <stdio.h>
    32 #include <stdlib.h>
    33 #include <string.h>
    34 #include <errno.h>
    35 #include <assert.h>
    36 #include <fcntl.h>
    37 #include <sys/stat.h>
    38 #include <stdarg.h>
    39 #include <time.h>
    40 #include <signal.h>
    41 #include <malloc.h>
    42 #include <memory.h>
    43 #include <limits.h>
    44 #include <math.h>
    45 #ifdef WIN32 /* windows */
    46 #include <windows.h>
    47 #else /* linux */
    48 #endif
    49 /*
    50  * Common Network header file
    51  */
    52 #ifdef WIN32 /* windows */
    53 //#include <winsock2.h>
    54 #else /* linux */
    55 #include <sys/types.h>
    56 #include <sys/socket.h>
    57 #include <netinet/in.h>
    58 #include <arpa/inet.h>
    59 #include <sys/time.h>
    60 #include <netdb.h>
    61 #include <sys/ioctl.h>
    62 #include <net/if.h>
    63 #include <sys/utsname.h>
    64 #include <netinet/in.h>
    65 #include <netinet/ip.h>
    66 #include <netinet/tcp.h>
    67 #include <netinet/ip_icmp.h>
    68 #include <netpacket/packet.h>
    69 #include <net/ethernet.h>
    70 #include <linux/fb.h>
    71 #include <sys/mman.h>
    72 #include <asm/types.h>
    73 #endif
    74 
    75 
    76 
    77 
    78 
    79 
    80 #endif /* __INCLUDE_BASE_INCLUDE_H */
     1 /*
     2  *
     3  * base_type.h
     4  *
     5  * 基本数据类型引用声明。
     6  *
     7  * 本代码支持win32平台和linux平台。
     8  *
     9  * Copyright (c)2012,lizhi<ibox>
    10  *
    11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
    12  *
    13  */
    14 
    15 
    16 #ifndef __INCLUDE_BASE_TYPE_H
    17 #define __INCLUDE_BASE_TYPE_H
    18 
    19 /*
    20  * 头文件
    21  */
    22 #include "base_include.h"
    23 
    24 
    25 /*
    26  * 基础数据类型定义(base data type define)
    27  */
    28 typedef char                            s8;
    29 typedef unsigned char                   u8;
    30 typedef short                           s16;
    31 typedef unsigned short                  u16;
    32 typedef long                            s32;
    33 typedef unsigned long                   u32;
    34 typedef float                           f32;
    35 typedef double                          f64;
    36 
    37 #if defined(WIN32) /* windows */
    38 typedef __int64                         s64;
    39 typedef unsigned __int64                u64;
    40 #else /* linux */
    41 typedef long long                       s64;
    42 typedef unsigned long long              u64;
    43 #endif
    44 
    45 
    46 /*
    47  * BOOL、TRUE、FALSE、NULL 定义
    48  */
    49 #ifndef BOOL
    50 #define BOOL                            (s32)
    51 #endif
    52 #ifndef TRUE
    53 #define TRUE                            (0x01)
    54 #endif
    55 #ifndef FALSE
    56 #define FALSE                           (0x00)
    57 #endif
    58 #ifndef NULL
    59 #define NULL                            (0x00)
    60 #endif
    61 
    62 
    63 /*
    64  * 函数参数类型说明
    65  */
    66 #ifndef IN
    67 #define IN
    68 #endif
    69 #ifndef OUT
    70 #define OUT
    71 #endif
    72 #ifndef INOUT
    73 #define INOUT
    74 #endif
    75 
    76 
    77 
    78 #endif /* __INCLUDE_BASE_TYPE_H */
      1 /*
      2  *
      3  * base_debug.h
      4  *
      5  * 基本DEBUG调试宏定义。
      6  *
      7  * 本代码支持win32平台和linux平台。
      8  *
      9  * Copyright (c)2012,lizhi<ibox>
     10  *
     11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
     12  *
     13  */
     14 
     15 
     16 #ifndef __INCLUDE_BASE_DEBUG_H
     17 #define __INCLUDE_BASE_DEBUG_H
     18 
     19 
     20 /*
     21  * Macro开关
     22  */
     23 #ifndef USER_DEBUG
     24 #define USER_DEBUG
     25 #endif
     26 
     27 /*
     28  * debug调试宏定义
     29  */
     30 #ifdef USER_DEBUG
     31 
     32 
     33 #define _my_printf              printf
     34 
     35 
     36 #ifdef WIN32
     37 #define _my_print_info(strerr, strfile, iline)                          \
     38         fprintf(stderr,                                                 \
     39                 "  >%s, assert failed (%s:%d)\n"                        \
     40                 "  >errno : %d, %s\n"                                   \
     41                 "  >network last error : %d, last error : %d\n\n",      \
     42                 strerr, strfile, iline,                                 \
     43                 errno, strerror(errno),                                 \
     44                 WSAGetLastError(), GetLastError())
     45 #else
     46 #define _my_print_info(strerr, strfile, iline)                          \
     47         fprintf(stderr,                                                 \
     48                 "  >%s, assert failed (%s:%d)\n"                        \
     49                 "  >errno : %d, %s\n\n",                                \
     50                 strerr, strfile, iline,                                 \
     51                 errno, strerror(errno))
     52 #endif
     53 
     54 #define _my_assert(condition)                                           \
     55         do {                                                            \
     56                 if ( !(condition) ) {                                   \
     57                         _my_print_info("ERROR", __FILE__, __LINE__);    \
     58                         fflush(stderr);                                 \
     59                         exit(-1);                                       \
     60                 }                                                       \
     61         } while(0);
     62 
     63 #define _my_warn(condition)                                             \
     64         do {                                                            \
     65                 if ( !(condition) ) {                                   \
     66                         _my_print_info("WARNING", __FILE__, __LINE__);  \
     67                         fflush(stderr);                                 \
     68                 }                                                       \
     69         } while(0);
     70 
     71 #define _my_assertex(condition, file, line)                             \
     72         do {                                                            \
     73                 if ( !(condition) ) {                                   \
     74                         _my_print_info("ERROR", file, line);            \
     75                         fflush(stderr);                                 \
     76                         exit(-1);                                       \
     77                 }                                                       \
     78         } while(0);
     79 
     80 #define _my_warnex(condition, file, line)                               \
     81         do {                                                            \
     82                 if ( !(condition) ) {                                   \
     83                         _my_print_info("WARNING", file, line);          \
     84                         fflush(stderr);                                 \
     85                 }                                                       \
     86         } while(0);
     87 
     88 #define _my_assert_info(condition, info)                                \
     89         do {                                                            \
     90                 if ( !(condition) ) {                                   \
     91                         _my_print_info((info), __FILE__, __LINE__);     \
     92                         fflush(stderr);                                 \
     93                         exit(-1);                                       \
     94                 }                                                       \
     95         } while(0);
     96 
     97 #define _my_warn_info(condition, info)                                  \
     98         do {                                                            \
     99                 if ( !(condition) ) {                                   \
    100                         _my_print_info((info), __FILE__, __LINE__);     \
    101                         fflush(stderr);                                 \
    102                 }                                                       \
    103         } while(0);
    104 
    105 #else
    106 
    107 
    108 #define _my_printf
    109 #define _my_assert(condition)
    110 #define _my_assertex(condition, file, line)
    111 #define _my_warn(condition)
    112 #define _my_warnex(condition, file, line)
    113 #define _my_assert_info(condition, info)
    114 #define _my_warn_info(condition, info)
    115 
    116 #endif /* USER_DEBUG */
    117 
    118 
    119 
    120 #endif /* __INCLUDE_BASE_DEBUG_H */
      1 /*
      2  *
      3  * base_endian.h
      4  *
      5  * 基本数据编码和转换函数定义。
      6  *
      7  * 本代码支持win32平台和linux平台。
      8  *
      9  * Copyright (c)2012,lizhi<ibox>
     10  *
     11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
     12  *
     13  */
     14 
     15 
     16 #ifndef __INCLUDE_BASE_ENDIAN_H
     17 #define __INCLUDE_BASE_ENDIAN_H
     18 
     19 
     20 /*
     21  * 头文件
     22  */
     23 #include "base_type.h"
     24 
     25 
     26 /*
     27  * Macro开关
     28  */
     29 #ifndef USER_ENDIAN
     30 #define USER_ENDIAN
     31 #endif
     32 
     33 
     34 #ifdef USER_ENDIAN
     35 
     36 /*
     37  * _my_hasbe - 判断主机顺序是否为大端;
     38  *
     39  * 返回TRUE: 主机顺序为大端,否则为小端;
     40  *
     41  * h表示host,be表示big endian;
     42  *
     43  */
     44 int _my_hasbe(void);
     45 
     46 
     47 /*
     48  * _my_swpe16/_my_swpe32/_my_swpe64 - 交互端顺序;
     49  *
     50  * 如大端(Big-Endian)转换成小端(Little-Endian),或者小端转换成大端
     51  *
     52  */
     53 #define _my_swpe16(data)        ((((data) & 0xff00) >> 8) | (((data) & 0x00ff) << 8))
     54 #define _my_swpe32(data)        ((((data) & 0xff000000) >> 24)                          \
     55                                         | (((data) & 0x00ff0000) >> 8)                  \
     56                                         | (((data) & 0x0000ff00) << 8)                  \
     57                                         | (((data) & 0x000000ff) << 24))
     58 #define _my_swpe64(data)        ((((data) & (u64)(0xff00000000000000)) >> 56)           \
     59                                         | (((data) & (u64)(0x00ff000000000000)) >> 40)  \
     60                                         | (((data) & (u64)(0x0000ff0000000000)) >> 24)  \
     61                                         | (((data) & (u64)(0x000000ff00000000)) >> 08)  \
     62                                         | (((data) & (u64)(0x00000000ff000000)) << 08)  \
     63                                         | (((data) & (u64)(0x0000000000ff0000)) << 24)  \
     64                                         | (((data) & (u64)(0x000000000000ff00)) << 40)  \
     65                                         | (((data) & (u64)(0x00000000000000ff)) << 56))
     66 
     67 /*
     68  * _my_btohN/_my_htobN - 主机字节顺序与大端顺序间的相互转换;
     69  *
     70  * h表示host,be表示big endian;
     71  *
     72  */
     73 #define _my_btoh16(data)        ( _my_hasbe() ? (data) : _my_swpe16(data))
     74 #define _my_btoh32(data)        ( _my_hasbe() ? (data) : _my_swpe32(data))
     75 #define _my_btoh64(data)        ( _my_hasbe() ? (data) : _my_swpe64(data))
     76 #define _my_htob16(data)        (_my_btoh16(data))
     77 #define _my_htob32(data)        (_my_btoh32(data))
     78 #define _my_htob64(data)        (_my_btoh64(data))
     79 /*
     80  * _my_btolN/_my_ltobN - 主机字节顺序与小端顺序间的相互转换;
     81  *
     82  * h表示host,l表示little endian;
     83  *
     84  */
     85 #define _my_ltoh16(data)        ((!_my_hasbe()) ? (data) : _my_swpe16(data))
     86 #define _my_ltoh32(data)        ((!_my_hasbe()) ? (data) : _my_swpe32(data))
     87 #define _my_ltoh64(data)        ((!_my_hasbe()) ? (data) : _my_swpe64(data))
     88 #define _my_htol16(data)        (_my_ltoh16(data))
     89 #define _my_htol32(data)        (_my_ltoh32(data))
     90 #define _my_htol64(data)        (_my_ltoh64(data))
     91 /*
     92  * _my_htonN/_my_ntohN - 主机字节顺序与网络字节顺序间的相互转换;
     93  *
     94  * h表示host,n表示net;
     95  *
     96  */
     97 #define _my_hton16(data)        (_my_htob16(data))
     98 #define _my_hton32(data)        (_my_htob32(data))
     99 #define _my_hton64(data)        (_my_htob64(data))
    100 #define _my_ntoh16(data)        (_my_btoh16(data))
    101 #define _my_ntoh32(data)        (_my_btoh32(data))
    102 #define _my_ntoh64(data)        (_my_btoh64(data))
    103 
    104 /*
    105  * _my_getXN - 按字节顺序取值;
    106  *
    107  */
    108 #define _my_get8(p)             ((p)[0])
    109 #define _my_getl16(p)           (((p)[0]) | (((p)[1]) << 8))
    110 #define _my_getb16(p)           (((p)[1]) | (((p)[0]) << 8))
    111 #define _my_getl32(p)           (((p)[0]) | (((p)[1]) << 8) | (((p)[2]) << 16) | (((p)[3]) << 24))
    112 #define _my_getb32(p)           (((p)[3]) | (((p)[2]) << 8) | (((p)[1]) << 16) | (((p)[0]) << 24))
    113 #define _my_getl64(p)           (((p)[0]) | (((p)[1]) << 8) | (((p)[2]) << 16) | (((p)[3]) << 24)       \
    114                                         | (((p)[4]) << 32) | (((p)[5]) << 40) | (((p)[6]) << 48) | (((p)[7]) << 56))
    115 #define _my_getb64(p)           (((p)[7]) | (((p)[6]) << 8) | (((p)[5]) << 16) | (((p)[4]) << 24)       \
    116                                         | (((p)[3]) << 32) | (((p)[2]) << 40) | (((p)[1]) << 48) | (((p)[0]) << 56))
    117 #define _my_geth16(p)           (_my_hasbe() ? _my_getb16(p) : _my_getl16(p))
    118 #define _my_geth32(p)           (_my_hasbe() ? _my_getb32(p) : _my_getl32(p))
    119 #define _my_geth64(p)           (_my_hasbe() ? _my_getb64(p) : _my_getl64(p))
    120 
    121 #define _my_getl24(p)           (((p)[0]) | ((p)[1] << 8)| ((p)[2] << 16))
    122 #define _my_getb24(p)           (((p)[0] << 24) | ((p)[1] << 16) | ((p)[2] << 8))
    123 #define _my_geth24(p)           (_my_hasb_chk() ? _my_getb24(p) : _my_getl24(p))
    124 
    125 
    126 
    127 
    128 #endif /* USER_ENDIAN */
    129 
    130 
    131 #endif /* __INCLUDE_BASE_ENDIAN_H */
     1 /*
     2  *
     3  * base_function.h
     4  *
     5  * 基本函数及宏定义。
     6  *
     7  * 本代码支持win32平台和linux平台。
     8  *
     9  * Copyright (c)2012,lizhi<ibox>
    10  *
    11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
    12  *
    13  */
    14 
    15 
    16 #ifndef __INCLUDE_BASE_FUNCTION_H
    17 #define __INCLUDE_BASE_FUNCTION_H
    18 
    19 
    20 /*
    21  * Macro开关
    22  */
    23 #ifndef USER_FUNCTION
    24 #define USER_FUNCTION
    25 #endif
    26 
    27 
    28 /*
    29  * Macro开关
    30  */
    31 #ifdef USER_FUNCTION
    32 
    33 
    34 /*
    35  * 内存申请
    36  */
    37 #define _my_buf_malloc(size)            malloc(size)
    38 #define _my_buf_free(ptr)               free(ptr)
    39 
    40 /*
    41  * min/max - 数学比较(非标准库函数)
    42  */
    43 #define _my_min(x, y)                   ((x) <= (y) ? (x) : (y))
    44 #define _my_max(x, y)                   ((x) >= (y) ? (x) : (y))
    45 
    46 /*
    47  * 字符\字符串处理函数(非标准库函数)
    48  *
    49  * strupr/strlwr - 转换大小写
    50  *
    51  */
    52 char * _my_strupr(char *str);
    53 char * _my_strlwr(char *str);
    54 
    55 
    56 #endif /* USER_FUNCTION */
    57 
    58 #endif /* __INCLUDE_BASE_FUNCTION_H */
     1 /*
     2  *
     3  * base_endian.c
     4  *
     5  * 基本数据编码和转换函数定义。
     6  *
     7  * 本代码支持win32平台和linux平台。
     8  *
     9  * Copyright (c)2012,lizhi<ibox>
    10  *
    11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
    12  *
    13  */
    14 
    15 
    16 /*
    17  * 头文件
    18  */
    19 #include "base_type.h"
    20 #include "base_include.h"
    21 #include "base_debug.h"
    22 #include "base_function.h"
    23 #include "base_endian.h"
    24 
    25 
    26 /*
    27  * _my_hasbe - 判断主机顺序是否为大端;
    28  *
    29  * 返回TRUE: 主机顺序为大端,否则为小端;
    30  *
    31  */
    32 int _my_hasbe(void)
    33 {
    34         u16 data = 0x0001;
    35         u8* p = (u8*)(&data);
    36         return ((u8)(*p) == 0x01) ? FALSE : TRUE;
    37 }
     1 /*
     2  *
     3  * base_function.c
     4  *
     5  * 基本函数及宏定义。
     6  *
     7  * 本代码支持win32平台和linux平台。
     8  *
     9  * Copyright (c)2012,lizhi<ibox>
    10  *
    11  * 2012-10-10 V1.0 lizhi<QQ:252240557,msn:ddgooo@hotmail.com> created
    12  *
    13  */
    14 
    15 
    16 /*
    17  * 头文件
    18  */
    19 #include "base_type.h"
    20 #include "base_include.h"
    21 #include "base_debug.h"
    22 #include "base_endian.h"
    23 
    24 
    25 
    26 /*
    27  * 字符\字符串处理函数(非标准库函数)
    28  *
    29  * strupr/strlwr - 转换大小写
    30  *
    31  */
    32 char * _my_strupr(char *str)
    33 {
    34         char *p = str;
    35         while (*p != '\0') {
    36                 if(*p >= 'a' && *p <= 'z'){
    37                         *p -= 0x20;
    38                 }
    39                 p++;
    40         }
    41         return str;
    42 }
    43 /*
    44  * 字符\字符串处理函数(非标准函数)
    45  *
    46  * strupr/strlwr - 转换大小写
    47  *
    48  */
    49 char * _my_strlwr(char *str)
    50 {
    51         char *p = str;
    52         while (*p != '\0') {
    53                 if(*p >= 'A' && *p <= 'Z'){
    54                         *p += 0x20;
    55                 }
    56                 p++;
    57         }
    58         return str;
    59 }
  • 相关阅读:
    大话设计模式(二)代理模式 工厂方法模式 原型模式 模板方法模式 迪米特法模式 外观模式
    大话设计模式(一)简单工厂模式 策略模式 单一职责原则 开放-封闭原则 依赖倒置原则 装饰模式
    eclipse为hibernate.cfg.xml添加自动提示【转】
    Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode
    Chrome 浏览器提示adobe flash player不是最新版本
    spring mvc <mvc:default-servlet-handler /> 。
    S2SH CRUD 整合
    Ms sql行转列。汇总
    Hibernate中的数据库方言(Dialect)
    SSH整合(1)异常
  • 原文地址:https://www.cnblogs.com/lizhi0755/p/2740050.html
Copyright © 2011-2022 走看看