#ifndef _LIBTAKA_H #define _LIBTAKA_H : #endif /* _LIBTAKA_H */
特に配列を確保するときのサイズなどは必ずそうすること。
[例] #define MAX_LBUF 256 #define SZ_FILE (sizeof(FILE))
[例] /*----------------------------------------------------------- Function : check the member or not in the chk_table Return : 0 -> n = member -1 = not member (NOT_FOUND) ----------------------------------------------------------*/ int tblchk(char *chk_tbl[],size_t tbl_size,char *candidate) { int i ; for (i=0; i<tbl_size; i++) { if (! strcmp(chk_tbl[i],candidate)) break; } if (i == tbl_size) i = NOT_FOUND; return i; }
if ((foo = (char *) malloc(sizeof *foo)) == 0) die_err("Virtual memory exhausted\n"); ⇒ foo = (char *) malloc(sizeof *foo)); if (foo == 0) die_err("Virtual memory exhausted\n");
if (rc == SUCCESS) { : }
while((c=getopt(argc,argv,"hf:")) != EOF) switch(c) { case 'f': rtn = optarg; break; case 'h': usage(pname,arglist); exit(SUCCESS); break; default: usage(pname,arglist); exit(ERROR); break; }
非同期入出力のシステムコールを使う場合は必ず EINTR を再試行すること。
ライブラリ | 理 由 |
---|---|
snprintf | sprintf() は指定された領域をオーバーする可能性がある |
fgets | gets() はバッファのオーバーランはチェックしないから |
memset() | bzero() は使わない。UNIX としては memset() に統一されつつある |
著者 | 本の名前 | 出版社 | 値段 |
---|---|---|---|
D.M.リッチー | プログラミング言語 C | 共立出版 | |
木村泉 | プログラム書法 | |
|
Mike Gancarz | UNIX という考え方 | オーム社開発局 | 1600 |