错误 C2365 “SID”: 重定义;以前的定义是“typedef”

问题描述

enum FinsCommandField : unsigned char
{
	...
	SID,
};

...

mCmdFins[SID] = 0x01;		    // 09 SID Service ID

错误 C2365:“SID”: 重定义;以前的定义是“typedef”

这是 MSVC 编译器(Visual Studio) 报出的一个典型错误,表示标识符 SID 被重复定义了两次:

第一次被定义为一个 typedef(可能是某种结构体或类型的别名)
第二次又被用作其他东西(比如变量、枚举值、宏等)

原因分析:

常见情况如下:

Windows SDK 中定义了 SID
SIDWindows 安全相关类型(Security Identifier),在头文件如 <winnt.h><windows.h> 中定义:

typedef struct _SID SID, *PISID;

如果你在自己的代码中又写了:

int SID; // 或者 enum { SID = ... };

就会报错:C2365:重定义,之前的定义是 typedef

解决方案:

修改变量名SerID使用命名空间或类作用域封装 SID

enum FinsCommandField : unsigned char
{
	...
	SerID,
};

...

mCmdFins[SerID] = 0x01;		    // 09 SID Service ID
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值