Joe's C language include files

joe.h

個人用の基本的なマクロの定義ファイル。引数を取らないマクロはここに。

joe2.h

引数を取る(やや危険な)マクロはここに。 標準出力(画面)とファイルへの同時出力など。

Jutils.c

実行のたびごとに、ディレクトリ run001, run002, run003, ... を勝手に作成していき、そこに計算結果のファイル達を収めていくための関数など。

使用例 ( sample source code )

#include <stdio.h> #include "/home/joe/C/joe2.h" //// // compile me with gcc -O2 sample.c Jutils.c -o sample //// void JprepareRunDir(char runDir[8]); FILE *JFopen(char *dir, char *filename, char *mode); int main(int argc, char *argv[]){ double r; FILE *fp; char str[256]; // THIS VARIABLE NAME IS HARD-CODED IN MYFFLUSH AND MYPUTS char runDir[8]; PR("These macros are to output a string (e.g. parameter values) both in stdout and to a file.\n"); PR("Everytime this program is run, it creates a new directory runXXX. \n"); PRN; JprepareRunDir(runDir); PR("%s \n",runDir); fp=JFopen(runDir, "hogehoge.txt","w"); FPPRARGS(fp); FPPR(fp,"Params:\n"); r=2.45; SPR(str,"r=%f",r); FPPR3(fp,"%s\n",str); // MYFFLUSH does the same thing as this line, plus fflush(fp); FPPRN(fp); // repeating similar actions by different macro names (bit shorter) r=3.14; SPR(str,"r=%f",r); MYFFLUSH(fp); r=1.41; SPR(str,"r=%f\n",r); FPUTS(str,fp); r=1.00; SPR(str,"r=%f",r); MYPUTS(fp); fclose(fp); }