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

getting errors with macros definition-c++

本文关键字:错误 -c++ 宏定义      更新时间:2023-10-16

我在以下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++中每个类或枚举定义之后都需要一个分号)。