cwnicol programming

プログラミング関連の投稿をすこしだけ

データ構造が配列になっていない場合の対処方法

データ構造が配列になっていれば、ループを使用して、
書けるが、配列構造になっていない場合には、変数の
数だけ関数を書かなければならない。
→マクロを使用してなんとかならないか(←出発点)
(追記)マクロのほかに、ワーク用領域(配列を使って定義)を使う。
データアクセス用のAPIを用意する。と合わせて現在の所3通りの解決法があるが、
ワーク用領域を使う。と言うのがコードもスッキリして書きやすいかも

#include <stdio.h>
#include <conio.h>


typedef struct{
	int a;
	int b;
	int c;// 配列になっていない!
}hoge;

#define DEFINE_print(var, str) \
	void print##var(int aa){\
		printf("%d %s\n", aa, str);\
		return;\
	}
	

DEFINE_print(a, "aだよ");
DEFINE_print(b, "bだよ");
DEFINE_print(c, "cだよ");

int main(){
	hoge o;
	o.a = 1;
	o.b = 2;
	o.c = 3;

	printa(o.a);
	printb(o.b);
	printc(o.c);

	getchar();

	return 0;
}