C言語のマクロで便利そうなもの

C言語のマクロで面白そうなものをメモ!

#include

#define _PFP(str) printf("%s\n", str)
#define ASIZEOF(array) (sizeof(array) / sizeof(array[0]))
#define FOR(i, j) for(((i) = 0); ((i) < (j)); ((i)++))
#define ISR(str) str, #str

enum etest{ aaa, bbb, ccc };

typedef struct _stest
{
    enum etest yyy;
    char *name;
}stest;

int main()
{
    int i;

    stest ts[] = { ISR(aaa), ISR(bbb), ISR(ccc) };

    FOR(i, ASIZEOF(ts))
        _PFP(ts[i].name);

}

enumとマクロの組み合わせ
for文
配列の要素数を求める

の3つが特に面白いとおもう。
積極的にマクロを使うのもいいかなーっ

ただ、マクロが嫌いな人もいると思うので、使っていいのか悩みどころ。。

C++の使用禁止Cネイティブ機能だけ

クラスの概念がないと不便なので Cで似たようなことをすればいいと思って。。

思いついた擬似クラスの様なものをメモメモ


#include <stdio.h>

/* 擬似クラス */
struct Stest
{
	void (*out)();
};

/* 擬似メンバ関数 */
void out()
{
	printf("TEST\n");
}
/* 擬似コンストラクタ */
void stest(Stest* _Src)
{
	_Src->out = out;
}

void main()
{
	Stest st;
	stest(&st);    /* 手動コンストラクタ */

	st.out();
}