我是新手編程&我在閱讀本書時發現了這段代碼。我相信它給出了一個如何使用定義的assert()宏的例子。它不會在code :: blocks 10.05上編譯。我得到的錯誤,如使用一個簡單的assert()宏
- 「#」後面沒有在函數「廉政的main()」「斷言宏參數
- 未終止的#else
- 」在此範圍內未聲明
代碼:
#include<iostream>
#define DEBUG
#ifndef DEBUG
#define ASSERT(x)
#else
#define ASSERT(x)\
if(!(x))\
{\
cout<<"Error!!Assert"<<#x<<"failed\n";\
cout<<"on line"<<__LINE__<<"\n";\
cout<<"in file"<<__FILE__<<"\n";\
}\
#endif
using namespace std;
int main()
{
int x = 5;
cout<<"\nFirst assert.";
ASSERT(x==5);
cout<<"\nSecond assert.";
ASSERT(x!=5);
cout<<"\nDone."<<endl;
return 0;
}
任何幫助將不勝感激。提前致謝。
你把一個空行之前 的#define ASSERT(X)\ 如果(!(x))\ ?如果你是嘗試取出空行。 – irrelephant 2010-10-28 01:40:37
在用反斜槓結尾的宏定義行後面可能有空行。您必須將宏定義行保留在一起,並用反斜槓結束每行。 – 2010-10-28 01:40:58