2015-07-10 162 views
2

所以我有这个简单的函数,它假设返回true或false。真实只返回2%的时间,并在其他时间返回false。但是,每当我尝试编译完整的代码时,都会收到错误消息;'TRUE'未在此范围内声明C++

“TRUE”并没有在此范围内C++声明

我知道我可以用int,而不是bool,只是使用1为真,0为假的,但我想弄清楚为什么这是行不通的。任何帮助?

这里是我的功能:

bool Bunny::determineMutant() 
{ 
    int rand_num = rand() % 100 + 1; //random num 1-100 
    if(rand_num == 1 || rand_num == 2) return TRUE; 
    else return FALSE; 
} 
+8

尝试不使用大写 –

回答

4

TRUEFALSE往往associated with the Win32 type BOOL,可替代地为整数10的宏。由于TRUE的定义不可用,因此实际出现错误。

对于built in C++ typebool使用truefalse。我认为这应该是这里的首选解决方案。

作为旁注,可以简化代码以基于if()中的条件返回,该条件已经是bool;

return (rand_num == 1 || rand_num == 2); 
1

C语言中的关键字++都是小写truefalse

全帽TRUEFALSE是在VC 10通常分别预处理宏,和用于返回的type BOOL

+0

我相信Cocoa也定义了它们。 – celticminstrel

1

这很简单。没有TRUEFALSE,但它们被称为truefalse