2015-07-10 189 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