我正在开发一个用于嵌入式平台的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)
答案 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或影响你的库配置的任何类似的东西。因此,在使用您的库之前,用户将负责调整配置标头中的设置。