bool static my_var_initialized = false;
偶然寫出了這樣一句C代碼,環境是visual studio 2012,工程是Compile as C的,竟然報了好幾個錯誤:
錯誤 1 error C2065: “bool”: 未聲明的標識符 g:\visualstudio\2012\console\helloc\helloc\test.c 12 1 HelloC
錯誤 5 error C2065: “true”: 未聲明的標識符 g:\visualstudio\2012\console\helloc\helloc\test.c 17 1 HelloC
寫慣了java C++,突然遇到這個問題就懵了。
經查證,C99標准以前,C語言里面是沒有bool(布爾)類型的,C++里面才有,這就是說,在C++里面使用bool類型是沒有問題的,bool類型有只有兩個值:true =1 、false=0。C99標准里面定義了bool類型,需要引入頭文件stdbool.h,關於這一點在VS2012中是不行的,include之后會報錯無法打開源文件stdbool.h,不過有前輩已經在gcc 4.3.0上實驗過了,是可行的。
為了兼容支持各種各樣的編譯器,可以自定義bool:
1)
#define bool char
#define true 1
#define false 0
2)
enum BOOL
{
FALSE, TRUE
};
