首页 > 解决方案 > C - 由于头部包含而重新定义

问题描述

我用 ANCI C 在 C 中编程,但布尔定义有问题。我创建了一个只包含'''typedef enum { false, true } bool;'''的头文件bool.h。问题是我有 2 个头文件,我们称它们为包含此 bool.h 的 ah 和 bh,因为它们都有返回 bool 的函数原型。而且我还有另外一个头文件ch,包含ah和bh,导致bool重定义编译错误。 https://imgur.com/a/CUu897f

标签: cbooleanredefinitionansi-c

解决方案


Lundin 是对的:头球后卫是做到这一点的方法。实际上,这可能是唯一被广泛接受的方法。不使用头部保护的限制确实很奇怪,我只能想知道这有什么意义。无论如何,可能有办法解决它,但从实际的角度来看这是完全错误的。

你可以做的是:

主.c:

typedef bool {false, true} bool;
#include "a.h"
#include "b.h"

int main(int argc, char **argv)
{
...
}

然后#include "bool.h"从 ah 和 bh中删除

可以解决问题,但 - 再一次 - 根本不应该这样做。


推荐阅读