2012-01-04 88 views
40

任何人都可以解釋我在_Bool和Bool數據類型之間有什麼區別嗎? 例如C中_Bool和bool類型的區別?

_Bool x = 1; 
    bool y = true; 

    printf("%d", x); 
    printf("%d", y); 
+1

'bool'也必須是typedef,C沒有那種類型。 – 2012-01-04 09:11:47

+0

類似於_Complex vs complex。 – 2014-09-17 10:58:42

回答

87

在C99中加入這些數據類型的宏。由於bool在C99之前未被保留,因此它們使用_Bool關鍵字(保留)。

bool如果包含stdbool.h,則爲_Bool的別名。基本上,包括stdbool.h標題表示您的代碼是正確的,標識符bool爲'保留',即您的代碼不會將其用於自己的目的(類似地,標識符爲truefalse)。

+4

+1包括歷史記錄。 – Lindydancer 2012-01-04 09:21:08

+18

長期的意圖似乎是標準最終會被修改爲使bool成爲關鍵字。這是第1步,您可以使用獲取bool宏,並且您仍然可以爲自己的惡意目的取消定義或重新定義它。 步驟2將拒絕從中取消定義或重新定義bool以勸阻這樣的欺騙。然後第3步是使布爾完全像_Bool和標記_Bool不贊成使用關鍵字。在這條漫長的道路(比如現在的十年或者二十年)結束時,標準的C代碼將會有一個bool類型,新的程序員不會知道它從來沒有缺少過。 – tialaramex 2012-08-31 10:54:38

+2

我不明白爲什麼這需要花二十年時間,因爲這是一個非常明顯的改進。不喜歡此更改的代碼仍可使用當前編譯器版本進行編譯。 – 2013-08-31 16:45:34

13

沒有區別。

bool是在stdbool.h中擴展爲_Bool的宏。

true爲展開至1 stdbool.h

相關問題