typedef struct {
int N;
double a;
size_t b_num;
double *b;
} param;
void param_new(param *p)
{
p->N = 1;
p->a = 10.1;
p->b_num = 100;
p->b = (double *)calloc(p->b_num,sizeof(double));
return;
}
void param_free(param *p)
{
free(p->b);
return;
}
void param_print(param *p)
{
size_t i = 0;
size_t b_num = p->b_num;
printf("# i\t=\t% d\n",i);
printf("# a\t=\t% e\n",a);
for(i=0;i<b_num;i++){
printf("# b[%d]\t=\t% e\n",i,b[i]);
}
return;
}
int main(int argc, char **argv)
{
param *p;
p = (param *)calloc(1,sizeof(param));
param_new(p);
param_print(p);
param_free(p);
free(p);
return 0;
}
プログラム全体で知っておかねばならないパラメータは構造体paramの内部で宣言しておいて、それらの初期値をparam_newで定義する。プログラム終了直前にparam_freeでparam_newの中でアロケートしたメモリをfreeする。param_printはparam_newではparamの内容チェック用。
これが良いのか悪いのかよくわからないけれど、こんな感じで書くことに最近はまってる。意外とgetoptしたときとか相性が良いと思うんだけどなぁ。