我在以下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;
    }

最佳答案

您缺少线拼接字符

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


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

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

main中的宏调用之后,您还会错过分号(在C ++中,每个类或枚举定义后都需要有一个分号)。

关于c++ - 在宏定义中出现错误-C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5895374/

10-12 00:56