#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 |