2014-03-30 269 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关于所谓的“静态变量初始化顺序的悲剧”的更多信息。