【发布时间】:2015-05-11 16:13:29
【问题描述】:
各位程序员,
我是 C 预处理器的新手,最近一直在尝试在 C 中创建一个类似泛型的库(作为练习),我在创建标头保护时遇到了一个小问题。
所有预处理器宏都已设置好,因此我可以像这样包含和使用我的标头:
#define TYPE int
#include "myheader.h"
#undef TYPE
#define TYPE float
#include "myheader.h"
#undef TYPE
int main(void){
//Do stuff
MyFunc_int();
//More stuff
MyFunc_float();
return 0;
}
但是当我需要在多个文件中包含标题时,就会出现问题。在这种情况下,通常会应用标头保护,但由于标头可以包含一次(每种类型),因此既不能使用通常的构造,也不能使用 #pragma once。
然后我的问题是:是否可以创建一个“变量”标头保护以适用于不同的 TYPE 定义?
【问题讨论】:
-
我猜在这种情况下你将不得不移除标题保护。因为它们的唯一目的是在文件(c、c++ 或任何要编译的文件)中包含一次头文件。
-
因为您的唯一目的是不止一次地包含标题,那么为什么还要麻烦包含那些编译指示或守卫?
-
顺便说一句,进入预处理器的好方法.. +1
-
问题是当我必须
#include它在多个相同类型的文件中。它给了我多重定义错误 -
@theadnangondal 说了什么。如果我们能看到
my header.h中的内容,我们或许可以提出更好的替代方案。
标签: c header c-preprocessor