2011-05-05 82 views
0

我在下面的cpp代碼中獲取ClassID未聲明的錯誤。獲取宏的錯誤定義-C++

#include "stdafx.h" 
    #include <iostream> 
    using namespace std; 
    #define RM_SESSION_MSG 0x11 
    #define DECLARE_RS232_MSG(ClassID) 
    enum 
    { 
     ID=ClassID 
    } 

    int main() 
    { 
     DECLARE_RS232_MSG(RM_SESSION_MSG) 
     return 0; 
    } 

回答

7

你缺少的線接頭字符

#define DECLARE_RS232_MSG(ClassID) \ 
enum        \ 
{         \ 
    ID=ClassID     \ 
} 

線接頭字符說,當前行和下一行合併成一行。

沒有它們,宏定義會在行尾結束,因此代碼中的enum實際上不是宏DECLARE_RS232_MSG的一部分。

main(在C++中每個類或枚舉定義之後都需要分號)後,您也會錯過分號。

+0

Schaub:謝謝......我的確像你在這裏所說的那樣。在幾秒鐘內輸出的數字讓我頭腦破了幾個小時。謝謝哥們兒。 – spandana 2011-05-05 09:40:30

+0

Schaub:在宏調用中添加分號後出現警告,因爲'聲明不聲明任何東西' – spandana 2011-05-05 12:15:34

+0

Schaub:它工作正常。 – spandana 2011-05-08 12:58:33