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

spa*_*ana 0 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;
    }
Run Code Online (Sandbox Code Playgroud)

Joh*_*itb 7

您缺少行拼接字符

#define DECLARE_RS232_MSG(ClassID) \
enum                               \
{                                  \
     ID=ClassID                    \
}
Run Code Online (Sandbox Code Playgroud)

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

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

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