c - 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
解决方案
Lundin 是对的:头球后卫是做到这一点的方法。实际上,这可能是唯一被广泛接受的方法。不使用头部保护的限制确实很奇怪,我只能想知道这有什么意义。无论如何,可能有办法解决它,但从实际的角度来看这是完全错误的。
你可以做的是:
主.c:
typedef bool {false, true} bool;
#include "a.h"
#include "b.h"
int main(int argc, char **argv)
{
...
}
然后#include "bool.h"
从 ah 和 bh中删除
这可以解决问题,但 - 再一次 - 根本不应该这样做。
推荐阅读
- javascript - 根据值更改变量的颜色
- .htaccess - 阻止我现有的文件夹名称并使用自定义文件夹名称进行访问 [htaccess]
- python - 在 pandas.crosstab() 中显示缺失 (NA) 值
- html - 1 列全宽,同时将第 2 列的内容与整个页面容器对齐
- reactjs - 控制台中未提示创建 Firestore 索引链接
- react-native - 获取用户的 Dropbox 访问令牌时出错
- python - python检查生成器是否为空的最佳方法
- java - 线程“主”javax.crypto.AEADBadTagException 中的异常:标记不匹配
- amazon-cognito - AWS Cognito OIDC 提供商 PKCE
- openstack - openstack ERROR oslo_db.sqlalchemy.engines [-] 发现数据库连接已断开