如何检查bool是否已经存在

时间:2013-04-21 19:37:16

标签: c boolean

我正在开发一个用于嵌入式平台的lib。我在头文件中有代码,它是lib的一部分 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)

2 个答案:

答案 0 :(得分:4)

你不能。

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

typedef enum { libname_false, libname_true } libname_bool;

在您的库实现中,您可以根据需要将这些名称替换为更方便的名称。

顺便说一下,您不应该使用前导下划线命名预处理器宏; those names are reserved for the compiler

答案 1 :(得分:1)

我会采用你现在的方式,提供某种类型的your_lib_config.h,其中包含像HAS_BOOL_DEFINED这样的#defines或影响你的库配置的任何类似的东西。因此,在使用您的库之前,用户将负责调整配置标头中的设置。