C言語コード整理の一つ

1916 ワード

1、メモリ操作
(1)メモリの解放操作
メモリを解放し、ポインタを空にします.
#define FREE(ptr)     if(NULL != ptr) \
                          free(ptr); \
                      ptr = NULL;

(2)メモリ操作
memcpy
memset
memmove
malloc
calloc
memcmp
2、c言語の整数数と文字列の変換
(1)文字列から整数
int atoi(const char *nptr);
(2)整数から文字列まで、sprintfで出力をフォーマットできる
 int sprintf(char *str, char * format [, argument, ...]);
3、シングルバイトの位置合わせ
プロセス間の通信では、単一バイトの位置合わせを使用して、いくつかの問題を回避します.
#define PACKED __attribute__((__packed__))// 


#pragma pack(push) // 
#pragma pack(4)// 4 
struct test
{
    char m1;
    double m4;
    int m3;
};
...(code)...
#pragma pack(pop)// 

 
4、配列の大きさを計算する
#define ARRSIZE(array_name)     (sizeof(array_name)/sizeof(array_name[0]))

5、IP互換設計、文字列として保存
typedef enum tagIPTYPE
{
    IP_NONE = 0,
    IP_v4,
    IP_v6,
    IP_v4v6
}IP_TYPE_E;

//netinet/in.h
#define IPv4_ADDRSTRLEN 16
#define IPv6_ADDRSTRLEN 46

typedef struct tagIPADDR
{
    IP_TYPE_E enIPType;
    char acIPv4[IPv4_ADDRSTRLEN];
    char acIPv6[IPv6_ADDRSTRLEN];
}PACKED IP_ADDR_S;

6、整数範囲
8ビットcharタイプ:-2^7~2^7-1
8ビットunsigned char:すなわちuint 8,0~2^8-1
32ビットintタイプ:-2^31~2^31-1、すなわち-217483648~217483647
32ビットunsigned int:uint 32,0~2^32-1、値4294967295
7、log等級一般設定:note/warning/error/brief/detail
8、コールバック
(1)同期呼び出し;ブロックモード
(2)コールバック、双方向
(3)非同期呼び出し、すなわち非同期メッセージによる通知
9、文字列処理
(1)文字';文字列";
(2)文字列処理関数
char* strstr(const char* haystack, const char* needle);
char* strchr(const char* s, int c);
char* strtok(char* str,const char* delim);
10、インバウンドチェック、戻り値チェック、変数使用前にクリアする必要があるかどうかを考慮しなければならない
11、C言語の中で.cppファイルの使用
#ifdef __cplusplus
extern "c"{
#endif
......
......
#ifdef __cplusplus
}
#endif