我正在开发一个用于嵌入式平台的库。我在作为 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)
你不能。
您的库可能应该定义自己的、独特的布尔类型:
typedef enum { libname_false, libname_true } libname_bool;
Run Code Online (Sandbox Code Playgroud)
在您的库实现中,您可以根据需要将它们别名为更方便的名称。
顺便说一下,你不应该用前导下划线命名预处理器宏;这些名称是为编译器保留的。