编译器错误 C2100 - C2199

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

重要

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++ 帮助和社区

错误消息

错误 消息
编译器错误 C2100 非法的间接寻址
编译器错误 C2101 常量上的“&”
编译器错误 C2102 "&" 要求左值
编译器错误 C2103 寄存器变量上的“&”
编译器错误 C2104 已忽略位域上的“&”
编译器错误 C2105 “operator”需要左值
编译器错误 C2106 “operator”:左操作数必须为左值
编译器错误 C2107 非法索引,不允许间接寻址
编译器错误 C2108 下标不是整型
编译器错误 C2109 下标要求数组或指针类型
编译器错误 C2110 “+”:不能添加两个指针
编译器错误 C2111 “+”:指针加法要求整型操作数
编译器错误 C2112 “-”:指针减法要求整型或指针操作数
编译器错误 C2113 “-”:指针只能从另一个指针上进行减法运算
编译器错误 C2114 “operator”:左侧指针;需要右侧的整数值
编译器错误 C2115 “operator”:不兼容的类型
编译器错误 C2116 函数参数列表有差异
编译器错误 C2117 “identifier”:数组界限溢出
编译器错误 C2118 负下标
编译器错误 C2119 “identifier”:无法从空的初始值设定项推导“type”的类型
编译器错误 C2120 对于所有类型“void”非法
编译器错误 C2121 “#”:无效字符:可能是宏扩展的结果
编译器错误 C2122 “identifier”:名称列表中的原型参数非法
编译器错误 C2123 “identifier”:别名模板无法显式或部分专门化
编译器错误 C2124 被零除或对零求模
编译器错误 C2125 “constexpr”与“token”不兼容
编译器错误 C2126 不能使用“constexpr”说明符声明“identifier”
编译器错误 C2127 “identifier”:非法初始化了含非常量表达式的“constexpr”实体
编译器错误 C2128 “function”:alloc_text/same_seg 只可用于带 C 链接的函数
编译器错误 C2129 静态函数“identifier”已声明但未定义
编译器错误 C2130 #line 应为包含文件名的字符串,却找到“token”
编译器错误 C2131 表达式的计算结果不是常数
编译器错误 C2132 语法错误:意外的标识符
编译器错误 C2133 “identifier”: 未知大小
编译器错误 C2134 “function”:调用不会生成常数表达式
编译器错误 C2135 “operator”:非法的位域操作
编译器错误 C2136 不允许创作 API 协定
编译器错误 C2137 空字符常量
编译器错误 C2138 定义没有任何成员的枚举是非法的
编译器错误 C2139 “class”:未定义的类不允许作为编译器内部类型特征“trait”的参数
编译器错误 C2140 “type”:依赖于泛型类型参数的类型不允许作为编译器内部类型特征“trait”的参数
编译器错误 C2141 数组大小溢出
编译器错误 C2142 函数声明有差异,只在一个声明中指定了变量参数
编译器错误 C2143 语法错误:“token2”的前面缺少“token1”
编译器错误 C2144 语法错误:“token2”的前面应有“type”
编译器错误 C2145 语法错误:标识符的前面缺少“token”
编译器错误 C2146 语法错误:标识符“identifier”的前面缺少“token”
编译器错误 C2147 语法错误:“token”是一个新关键字
编译器错误 C2148 数组的总大小不得超过 0xvalue 字节
编译器错误 C2149 “identifier”:已命名位域不能具有零宽度
编译器错误 C2150 “identifier”:位域必须有“int”、“signed int”或“unsigned int”类型
编译器错误 C2151 语言特性多于一个
编译器错误 C2152 “identifier”:指向有不同特性的函数的指针
编译器错误 C2153 整数文本必须至少具有一位数
编译器错误 C2154 “type”:只有枚举类型才允许作为编译器内部类型特征“trait”的参数
编译器错误 C2155 “?”:左边的操作数无效,应使用算术类型或指针类型
编译器错误 C2156 杂注必须在函数的外部
编译器错误 C2157 “identifier”:必须先声明,然后才可用于 pragma 列表
编译器错误 C2158 “type”:目前只有本机非模板类型才支持 #pragma make_public 指令
编译器错误 C2159 指定了一个以上的存储类
编译器错误 C2160 “##”不能在宏定义的开始处出现
编译器错误 C2161 “##”不能在宏定义的结尾处出现
编译器错误 C2162 应输入宏形参
编译器错误 C2163 “function”:不可用作内部函数
编译器错误 C2164 “function”:未声明内部函数
编译器错误 C2165 “modifier”:不能修改指向数据的指针
编译器错误 C2166 左值指定 const 对象
编译器错误 C2167 “function”:内部函数的实参过多
编译器错误 C2168 “function”:内部函数的实参太少
编译器错误 C2169 “function”:内部函数,不能定义
编译器错误 C2170 “function”:没有声明为函数,不能是内部函数
编译器错误 C2171 “operator”:“type”类型的操作数非法
编译器错误 C2172 “function”:实参不是指针:参数数目
编译器错误 C2173 “function”:实参不是指针:参数 number1,参数列表 number2
编译器错误 C2174 “function”:实参具有“void”类型:参数 number,参数列表 number
编译器错误 C2175 “locale”:无效的区域设置
编译器错误 C2176 不能在与构造函数关联的函数 try 块的处理程序中使用 return 语句
编译器错误 C2177 常量太大
编译器错误 C2178 不能使用“specifier”说明符声明“identifier”
编译器错误 C2179 “type”:特性参数不能使用类型参数
编译器错误 C2180 控制表达式具有类型“type”
编译器错误 C2181 没有匹配 if 的非法 else
编译器错误 C2182 “identifier”:非法使用“void”类型
编译器错误 C2183 语法错误:翻译单元为空
编译器错误 C2184 “type”:__except 表达式的类型非法
编译器错误 C2185 “identifier”:基于非法的分配
编译器错误 C2186 “operator”:“void”类型的操作数非法
编译器错误 C2187 语法错误:“token”出现在此处是意外
编译器错误 C2188 “number”:对宽字符来说太大
编译器错误 C2189 “alignas”属性不可适用于位域、函数参数、异常声明或用“register”存储类声明的变量
编译器错误 C2190 第一个参数列表比第二个长
编译器错误 C2191 第二个参数列表比第一个长
编译器错误 C2192 参数“number”声明不同
编译器错误 C2193 “identifier”:已在段中
编译器错误 C2194 “identifier”:是一个文本段
编译器错误 C2195 “identifier”:是一个数据段
编译器错误 C2196 case 值“value”已使用
编译器错误 C2197 “function”:用于调用的参数过多
编译器错误 C2198 “function”:用于调用的参数太少
编译器错误 C2199 语法错误:在全局范围内找到“identifier”(是否预期声明?

另请参阅

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