2014-03-30 224 views
1

我在「.h」頭文件中聲明的布爾全局變量,並初始化它「的.cpp」文件, 我遇到一個錯誤,我搜索的解決方案,發現我必須把它定義爲extern如下:在C初始化的全局變量++

//in .h file 
extern bool blindFound; 

// in .cpp file 
bool blindFound = false; 

但是當我打印內的其他方法它的價值,它給了我()不假!

感謝,

+0

如何打印? – hivert

+0

printf(「blindFound:%s \ n」,blindFound); – noor

回答

2
printf(" blindFound: %s \n", blindFound); 

它是C或C++?你的編譯器也應該警告你。打開警告並注意它們。

現在錯誤是你正在打印一個布爾值作爲字符串「%s」。您應該將其打印爲整數「%d」。然後false將顯示爲0並且爲真。

+0

C++,哦,似乎這是錯誤。謝謝。 – noor

+0

@ alsadi90如果您使用C++,爲什麼不使用C++提供的I/O方法? 'std :: cout'和'std :: cin'。 – Muepe

+0

我正在網絡模擬器上工作,這是它的常用方法 – noor

0

它往往是更好的功能來包裝這些變量,使其局部靜態對象。這有效地避免了初始化順序問題。

bool &blindFound() 
{ 
    static bool blindFound = false; 
    return blindFound; 
} 

用法:

blindFound() = true; // set value 
bool b = blindFound(); // read value 

看一看的C++ FAQ關於所謂的「靜態變量初始化順序的悲劇」的更多信息。