2013-04-21 106 views
0

我正在開發一個在嵌入式平臺上使用的庫。如果lib用戶已經定義了一個名爲bool的類型,那麼我該如何編碼這樣以便我的lib不會嘗試重新聲明它?如果lib用戶已經定義了一個名爲bool的類型,那麼我的代碼如何編碼以便我的lib不會嘗試重新聲明它?如何檢查bool是否已經存在

目前我使用的#define

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

但是這取決於已定義還定義_BOOL

布爾是否存在,如果存在types`with具體名稱檢查的方式,用戶?

(注意,這是一個C的問題,而不是C++,並且無論是我還是我的假設LIB用戶使用stdbool,Ta)的

+0

如果嵌入平臺,你應該已經知道'bool'是否存在,不是嗎? – WhozCraig 2013-04-21 19:46:33

+0

如果我創建了lib,並且它被另一個作者的應用程序(在同一個平臺上)調用,可能會定義bool本身,那麼不應該這樣做? – Toby 2013-04-22 12:47:02

回答

4

你不能。

你或許庫應該只是定義自己的,獨特的布爾類型:

typedef enum { libname_false, libname_true } libname_bool; 

在你的庫實現你的願望,你可以別名那些更方便的名字。

順便提一句,你不應該用前導下劃線來命名預處理宏; those names are reserved for the compiler

1

我會去你現在要去的方式,提供某種your_lib_config.h與#定義HAS_BOOL_DEFINED或任何類似的影響你的庫配置。因此,用戶將負責在使用庫之前調整配置標題中的設置。