我在“.h”头文件中声明的布尔全局变量,并初始化它“的.cpp”文件, 我遇到一个错误,我搜索的解决方案,发现我必须把它定义为extern如下:在C初始化的全局变量++
//in .h file
extern bool blindFound;
// in .cpp file
bool blindFound = false;
但是当我打印内的其他方法它的价值,它给了我(空)不假!
感谢,
我在“.h”头文件中声明的布尔全局变量,并初始化它“的.cpp”文件, 我遇到一个错误,我搜索的解决方案,发现我必须把它定义为extern如下:在C初始化的全局变量++
//in .h file
extern bool blindFound;
// in .cpp file
bool blindFound = false;
但是当我打印内的其他方法它的价值,它给了我(空)不假!
感谢,
您应该使用std::boolapha
是C++。
答案以上是一个小错误。
http://www.parashift.com/c++-faq-lite/iostream-vs-stdio.html
请尽量避免老printf
从C
http://www.cplusplus.com/reference/ios/boolalpha/
// modify boolalpha flag
#include <iostream> // std::cout, std::boolalpha, std::noboolalpha
int main() {
bool b = true;
std::cout << std::boolalpha << b << '\n';
std::cout << std::noboolalpha << b << '\n';
return 0;
}
它往往是更好的功能来包装这些变量,使其局部静态对象。这有效地避免了初始化顺序问题。
bool &blindFound()
{
static bool blindFound = false;
return blindFound;
}
用法:
blindFound() = true; // set value
bool b = blindFound(); // read value
看一看的C++ FAQ关于所谓的“静态变量初始化顺序的悲剧”的更多信息。
如何打印? – hivert
printf(“blindFound:%s \ n”,blindFound); – noor