gpt4 book ai didi

c++ - _Bool 和 bool : How do I solve the problem of a C library that uses _Bool?

转载 作者:IT老高 更新时间:2023-10-28 22:20:56 29 4
gpt4 key购买 nike

我用 C 语言编写了一组数据结构和函数,其中一些使用 _Bool 数据类型。当我开始时,项目将是纯 C。现在我正在研究使用基于 C++ 的 GUI 工具包,并将后端代码制作成库。

但是,在编译 C++ GUI 时,编译器会发出以下错误:

ISO C++ 禁止声明没有类型的“_Bool”

我最初认为我可以搜索并将 _Bool 替换为 bool 并创建:

/* mybool.h */
#ifndef MYBOOL_H
#define MYBOOL_H

typedef _Bool bool;

#endif /* MYBOOL_H */

然后在任何使用 _Bool 的 header 中

#ifdef __cplusplus
extern "C" {
#else
#include "mybool.h"
#endif

/* rest of header... */

直到我意识到这将使用一种 boolean (C _Bool) 数据类型编译库,并使用另一种 (C++ bool) 链接到库。实际上,这可能无关紧要,但从理论上讲,它可能确实如此(某处可能有一些模糊的系统,这样做会导致宇宙由内而外)。

我想我可以只使用一个 int 并使用 0 表示 false 和 1 表示 true,然后用 typedef int mybool 之类的东西对其进行 typedef,但这似乎没有吸引力。

有没有更好/惯用/标准的方法来做到这一点?

最佳答案

如果您使用的 C 和 C++ 编译器来自同一供应商,那么我希望 C _Bool与 C++ bool 的类型相同, 包括 <stdbool.h>将使一切都很好地互操作。如果它们来自不同的供应商,那么您需要检查兼容性。

注意,您可以随时测试 __cplusplus头中的宏来确定代码是否被编译为 C++,并适本地设置类型。

关于c++ - _Bool 和 bool : How do I solve the problem of a C library that uses _Bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3529831/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com