轉載請註明來源:http://blog.csdn.net/letian0805/article/details/17102403
經常有新手問我:編譯器提示無法找到true和false,怎麼處理?無法找到stdbool.h,怎麼處理。其實這不是什麼難題。如果系統沒有stdbool.h(因爲某些原因編譯器不提供了或者系統不提供了),我可以自己實現一個。
要實現stdbool.h就要了解 if 語句的特點。if 語句的括號裏只有兩種值:真或假(成立或不成立)。真值表裏用1表示真,用0表示假。所以,我們可以用1來當true,用0來當false。怎麼做?有兩種方法:1)用宏定義。2)用枚舉。第一種方法的優點是:不會和已有的相沖突;缺點:沒有構造新類型。第二種方法的優點是:構造了新的類型;缺點:可能與已有的定義相沖突。
產生衝突必然是很麻煩的。所以,我們應該採用第一種方法。當然,文章末尾也給出了第二種方法的實現。
用宏定義的方法如下:
#ifndef __STDBOOL_H
#define __STDBOOL_H
#undef bool
#undef true
#undef false
#define bool int
#define false 0
#define true (!false)
#endif
用枚舉的方法如下:
#ifndef __STDBOOL_H
#define __STDBOOL_H
typedef enum{
false = 0,
true = !false,
}bool;
#endif
將以上代碼保持爲stdbool.h放到頭文件目錄就可以了。