なぜこれまでCでテンプレートを実装する次の方法を見たことがないのか疑問に思います。私のアイデアは、プリプロセッサをテンプレート作業にすることでした。
container.h:
#ifndef TEMPLATE_TYPE
#error "missing decalaration TEMPLATE_TYPE"
#endif
#define _CONCAT(a, b) a##b
#define _EVALUATOR(a, b) _CONCAT(a, b)
#define MAKE_NAME(a, b) _EVALUATOR(a, b)
typedef struct {
TEMPLATE_TYPE data;
} MAKE_NAME(Container_, TEMPLATE_TYPE);
main.c:
#define TEMPLATE_TYPE int
#include "container.h"
int main() {
Container_int c;
c.data = 99923;
}
それで、どうしたのですか?
- これは単に「悪いスタイル」と見なされます
- 誰もそれについての記事を書かないことは非常に明白です
- たくさんの記事があります、ただグーグルマン!
#3で答える予定がない場合は、このテクニックについてコメントをいただければ幸いです。