【ANSI-C】 C言語なら俺に聞け! Part 127
■ このスレッドは過去ログ倉庫に格納されています
0188デフォルトの名無しさん
2006/05/15(月) 17:44:53二カ所以上で同じ事したら二重定義エラー。
static を付ければ最も簡単に回避できるが、
回避法としては微妙。
俺ならこうする。
-- hoge.h (二重インクルードガードは省略)
/* プロトタイプ宣言 */
#define PROTO_HOGE(type, func, id) \
type func##id(仮引数並び)
/* 実装 */
#define IMPL_HOGE(type, func, id) \
PROTO_HOGE(type, func, id) \
{ \
func(); \
}
-- hoge.c
#include "hoge.h"
IMPL_HOGE(int, hoge, id1) /* int hogeid1 を実装 */
-- 呼び出し側
#include "hoge.h"
PROTO_HOGE(int, hoge, id1); /* int hogeid1 のプロトタイプ宣言 */
int na = hogeid1(hoge);
■ このスレッドは過去ログ倉庫に格納されています