Share via


编译器错误 C2300 - C2399

本文档部分提到的文章解释了编译器生成的一部分错误消息。

重要

Visual Studio 编译器和生成工具可报告多种类型的错误和警告。 发现错误或警告后,生成工具可做出有关代码意向的假设并尝试继续,因此,可能会同时报告更多问题。 如果工具做出错误假设,则后续错误或警告可能不适于你的项目。 纠正项目中的问题时,请始终先纠正报告的第一个错误或警告,然后在通常情况下重新生成。 一个修补程序可能会使许多后续错误消失。

若要在 Visual Studio 中获取有关特定诊断消息的帮助内容,请在“输出”窗口中选择该消息,然后按 F1 键。 Visual Studio 会打开该错误的文档页(如果存在)。 还可以使用页面顶部的搜索工具查找有关特定错误或警告的文章。 或者,按工具浏览错误和警告列表,并在此页面上的内容列表中键入内容。

注意

并非所有 Visual Studio 错误或警告均有记录。 在许多情况下,诊断消息将提供所有可用信息。 如果在使用 F1 时登陆此页,并且认为错误或警告消息需要额外的解释,请告诉我们。 可以使用此页面上的反馈按钮在 GitHub 上提出文档问题。 如果认为错误或警告是错误的,或者发现了工具集的其他问题,请在开发者社区网站上报告产品问题。 还可以在 IDE 中发送反馈并输入 bug。 在 Visual Studio 中,转到菜单栏并选择“帮助”>“发送反馈”>“报告问题”,或者使用“帮助”>“发送反馈”>“发送建议”提交建议

可以在 Microsoft Learn Q&A 论坛上查找有关错误和警告的其他帮助。 或者,在 Visual Studio C++ 开发者社区网站上搜索错误或警告编号。 还可以搜索 Stack Overflow 以查找解决方案。

有关指向其他帮助和社区资源的链接,请参阅 Visual C++ 帮助和社区

错误消息

错误 消息
编译器错误 C2300 “class”:类没有名为“~class”的析构函数
编译器错误 C2301 “->~identifier”的左侧必须指向类/结构/联合
编译器错误 C2302 “.~identifier”的左侧必须有类/结构/联合类型
编译器错误 C2303 不能在协同例程中使用结构化异常处理
编译器错误 C2304 不能在 catch 块内使用“keyword”
编译器错误 C2305 “file”不包含此模块的调试信息
编译器错误 C2306 “file”不包含此模块的最新调试信息
编译器错误 C2307 如果启用增量编译,则必须将 pragma 指令移到函数外
编译器错误 C2308 串联不匹配的字符串
编译器错误 C2309 catch 处理程序需要带圆括号的异常声明
编译器错误 C2310 catch 处理程序必须指定一种类型
编译器错误 C2311 “type”:由“...”在行“number”上捕获
编译器错误 C2312 “type1”:由“type2”在行“number”上捕获
编译器错误 C2313 “type1”:由引用(“type2”)在行“number”上捕获
编译器错误 C2314 关键字“keyword1”已弃用:请改用“keyword2”
编译器错误 C2315 “type1”:由“type2”在行“number”上捕获引用
编译器错误 C2316 “type”:无法作为析构函数捕获,或者复制构造函数不可访问或已删除,或同时出现这两种情况
编译器错误 C2317 在行“number”上开始的“try”块没有 catch 处理程序
编译器错误 C2318 没有与该 catch 处理程序关联的 Try 块
编译器错误 C2319 “try/catch”后面必须有复合语句。 缺少“{”
编译器错误 C2320 应在访问说明符“specifier”的后面输入“:”
编译器错误 C2321 “identifier”是关键字,不能用于此上下文
编译器错误 C2322 “identifier”:dllimport“identifier”地址不是静态的
编译器错误 C2323 “identifier”:非成员运算符 new 或 delete 函数不可声明为静态的,也不可在全局命名空间之外的命名空间中进行声明
编译器错误 C2324 “identifier”:意外出现在“::~”右侧
编译器错误 C2325 “type1”:“->~”右侧的意外类型:应为“type2”
编译器错误 C2326 “declarator”:函数无法访问“dentifier”
编译器错误 C2327 “identifier”:不是类型名称、静态或枚举数
编译器错误 C2328 “keyword”:尚不支持关键字
编译器错误 C2329 “identifier”:__ptr64 不可用于指向函数的指针
编译器错误 C2330 “implementation_key( )”只在由 #pragma start_map_region/stop_map_region 限定的区域中有效
编译器错误 C2331 对“identifier”的访问现在定义为“accessibility1”,以前定义为“accessibility2”
编译器错误 C2332 “typedef”:缺少标记名称
编译器错误 C2333 “function”:函数声明中有错误;跳过函数体
编译器错误 C2334 “token”的前面有意外标记;跳过明显的函数体
编译器错误 C2335 “identifier”:函数参数列表中不能引入的类型
编译器错误 C2336 “type”:非法类型
编译器错误 C2337 “attribute”:未找到特性
编译器错误 C2338 (来自外部提供程序的错误消息)
编译器错误 C2339 “identifier”:嵌入式 IDL 中的非法类型
编译器错误 C2340 “identifier”:“static”只能在类定义中使用
编译器错误 C2341 “section”:使用段之前必须用 #pragma data_seg、code_seg 或节进行定义
编译器错误 C2342 语法错误:类型限定符冲突
编译器错误 C2343 “section”:节特性冲突
编译器错误 C2344 align(number):对齐必须是 2 的幂
编译器错误 C2345 align(number):非法的对齐值
编译器错误 C2346 “function”无法编译为原生:“explanation”
编译器错误 C2347 已过时。
编译器错误 C2348 “type”:不是 C 样式聚合,无法在嵌入式 IDL 中导出
编译器错误 C2349 “function”无法编译为托管:“explanation”;使用非托管 #pragma
编译器错误 C2350 “identifier”不是静态成员
编译器错误 C2351 过时的 C++ 构造函数初始化语法
编译器错误 C2352 “identifier”:非静态成员函数的非法调用
编译器错误 C2353 不允许使用异常规范
编译器错误 C2354 已过时。
编译器错误 C2355 “this”:只能在非静态成员函数或非静态数据成员初始值设定项的内部引用
编译器错误 C2356 初始化段在翻译单元期间不能更改
编译器错误 C2357 “identifier”:必须是类型为“type”的函数
编译器错误 C2358 “identifier”:无法在类定义的外部定义静态属性
编译器错误 C2359 已过时。
编译器错误 C2360 “identifier”的初始化被“case”标签跳过
编译器错误 C2361 “identifier”的初始化被“default”标签跳过
编译器错误 C2362 “identifier”的初始化被“goto”标签跳过
编译器错误 C2363 编译器内部数字限制函数需要一个字符串字面量参数
编译器错误 C2364 “type”:自定义特性的非法类型
编译器错误 C2365 “member1”:重新定义;以前的定义为“member2”
编译器错误 C2366 “identifier”:重新定义;不同的 implementation_key 说明符
编译器错误 C2367 已过时。
编译器错误 C2368 “identifier”:重新定义;不同的分配说明符
编译器错误 C2369 “identifier”:重新定义;不同的下标
编译器错误 C2370 “identifier”:重新定义;不同的存储类
编译器错误 C2371 “identifier”:重新定义;不同的基类型
编译器错误 C2372 “identifier”:重新定义;不同的间接寻址类型
编译器错误 C2373 “identifier”:重新定义;不同的类型修饰符
编译器错误 C2374 “identifier”:重新定义;多次初始化
编译器错误 C2375 “identifier”:重新定义;不同的链接
编译器错误 C2376 “identifier”:重新定义;不同基础的分配
编译器错误 C2377 “identifier”:重新定义;typedef 不能由任何其他符号重载
编译器错误 C2378 “identifier”:重新定义;符号不能使用 typedef 重载
编译器错误 C2379 提升后形参“number”具有不同的类型
编译器错误 C2380 “identifier”前的类型(具有返回类型的构造函数,或当前类名的非法重新定义?)
编译器错误 C2381 “identifier”:重新定义;“__declspec(noreturn)”或“[[noreturn]]”不同
编译器错误 C2382 “identifier”:重新定义;不同的异常规范
编译器错误 C2383 “identifier”:此符号中不允许有默认参数
编译器错误 C2384 “member”:无法将 thread_local 或 __declspec(thread) 应用于托管/WinRT 类的成员
编译器错误 C2385 对“member”的访问不明确
编译器错误 C2386 “identifier”:当前范围内已存在具有该名称的符号
编译器错误 C2387 “identifier”:不明确基类
编译器错误 C2388 “identifier”:不能同时使用 __declspec(appdomain) 和 __declspec(process) 来声明一个符号
编译器错误 C2389 “operator”:非法的操作数“nullptr”
编译器错误 C2390 “identifier”:不正确的存储类“specifier”
编译器错误 C2391 “identifier”:“friend”不能在类型定义过程中使用
编译器错误 C2392 “member1”:托管/WinRT 类型不支持协变返回类型,否则将重写“member2”
编译器错误 C2393 “symbol”:不能在“segment”段中分配 per-appdomain 符号
编译器错误 C2394 “type::operator operator”:CLR/WinRT 运算符无效。 至少一个参数必须是以下类型:“T^”、“T^%”或“T^&”,其中 T =“type”
编译器错误 C2395 “type::operator operator”:CLR/WinRT 运算符无效。 至少一个参数必须是以下类型:“T”、“T%”、“T&”、“T^”、“T^%”或“T^&”,其中 T =“type”
编译器错误 C2396 “type1::operator type2”:CLR/WinRT 用户定义的转换函数无效。 必须转换自或转换为:“T^”、“T^%”或“T^&”,其中 T =“type1”
编译器错误 C2397 从“type1”转换为“type2”需要收缩转换
编译器错误 C2398 元素“number”:从“type1”转换为“type2”需要收缩转换
编译器错误 C2399 已过时。

另请参阅

C/C++ 编译器和生成工具错误与警告
编译器错误 C2000 - C3999、C7000 - C7999