0

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

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

目前我已经使用#defines

#ifndef _BOOL 
#define _BOOL 
typedef enum bool{...
#endif

但是,这取决于定义了 bool 的用户也定义了 _BOOL

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

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

4

2 回答 2

5

你不能。

您的库可能应该只定义自己的不同布尔类型:

typedef enum { libname_false, libname_true } libname_bool;

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

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

于 2013-04-21T19:46:31.277 回答
1

我会走你现在的路,提供某种带有#defines的your_lib_config.h,如HAS_BOOL_DEFINED或影响你的库配置的任何类似内容。因此,用户将负责在使用您的库之前调整配置标头中的设置。

于 2013-04-21T19:42:52.737 回答