使用宏定义-c ++获取错误

时间:2011-05-05 09:23:18

标签: c++

我在以下cpp代码中收到ClassID未声明错误。

    #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;
    }

1 个答案:

答案 0 :(得分:7)

您缺少行拼接字符

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

行拼接字符表示当前行和下一行合并为一行。

如果没有它们,宏定义将在行尾结束,因此代码中的enum实际上并不是宏DECLARE_RS232_MSG的一部分。

main中的宏调用之后,你也错过了一个分号(在C ++中每个类或枚举定义之后需要一个分号)。