如何检查 bool 是否已经存在

Tob*_*oby 0 c boolean

我正在开发一个用于嵌入式平台的库。我在作为 lib 一部分的标头中有代码 typdef enum bool {false, true} bool;

如果 lib 用户已经定义了一个名为 bool 的类型,我该如何编码以便我的 lib 不会尝试重新声明它?

目前我已经使用了#defines

#ifndef _BOOL 
#define _BOOL 
typedef enum bool{...
#endif
Run Code Online (Sandbox Code Playgroud)

然而,这取决于定义了 bool 的用户也定义了 _BOOL

有没有办法检查具有特定名称的类型是否已经存在?

(注意这是一个 C 问题,而不是 C++,我和我假设的 lib 用户都没有使用 stdbool,Ta)

jam*_*lin 5

你不能。

您的库可能应该定义自己的、独特的布尔类型:

typedef enum { libname_false, libname_true } libname_bool;
Run Code Online (Sandbox Code Playgroud)

在您的库实现中,您可以根据需要将它们别名为更方便的名称。

顺便说一下,你不应该用前导下划线命名预处理器宏;这些名称是为编译器保留的