stdbool.h 的實現

轉載請註明來源: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放到頭文件目錄就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章