我在“.h”文件中声明了布尔全局变量,并将其初始化为“.cpp”文件, 我遇到了一个错误,我搜索了解决方案,发现我必须将其定义为extern,如下所示:
//in .h file
extern bool blindFound;
// in .cpp file
bool blindFound = false;
但是当我在其他方法中打印它的值时,它给了我( Null )不是假的!!
谢谢,
答案 0 :(得分:2)
printf(" blindFound: %s \n", blindFound );
是C还是C ++?你的编译器也应该警告你。打开警告并注意它们。
现在的错误是您将布尔值打印为字符串"%s"。你应该把它打印成一个整数"%d"。然后false将显示为0,true将显示为1。
答案 1 :(得分:0)
你应该使用std::boolapha
是C ++。
上面的答案是一个小错误。
http://www.parashift.com/c++-faq-lite/iostream-vs-stdio.html
请尽量避免使用旧版printf
。
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;
}
答案 2 :(得分:0)
通常最好将这些变量包装在函数中,使它们成为本地静态对象。这有效地避免了初始化顺序问题。
bool &blindFound()
{
static bool blindFound = false;
return blindFound;
}
用法:
blindFound() = true; // set value
bool b = blindFound(); // read value
有关所谓的“静态初始化顺序惨败”的更多信息,请查看C++ FAQ。