前言
本文章主要是介绍c语言在vs2022编译器上运行时常见的报错,主要是想解决各位在编程时遇到的各种问题。
- C4996:返回值被忽略
- C2057:应输入常量表达式
- E0169: 应输入声明
- E0040: 应输入标识符
- E0029:应输入表达式
- E0020:未定义的标识符
- C6262: 堆栈溢出
- C4244:从double转换为int可能会丢失数据
- C2065:“identifier”:未声明的标识符
- C2143: 语法错误缺少分号
- LNK1168: 无法打开进行写入
- C2146:语法错误缺少“)”在标识符“x”的前面
- C2069: 语法错误:“)”
- C3861:找不到的标识符
- E0127:应输入一个语句
- C2181:没有匹配if的非法else
- C2466:不能分配常量大小为0的数组
- C2057:应输入常量表达式
1.C4996 :
“scanf”返回值被忽略
报错类型:
解决方案:
1.加上**#define _CRT_SECURE_NO_WARNINGS** 头文件
2.预处理方案:在预处理上方加上**#pragma warning(disable:4996)**即可解决
**
2.C2057
报错类型:
// C2057.cpp int i; int b[i]; // C2057 - value of i is unknown at compile time int main() { const int i = 8; int b[i]; // OK - value of i is fixed and known to compiler }
**
解决方案:
// C2057b.c #define ArraySize1 10 int main() { const int ArraySize2 = 10; int h[ArraySize2]; // C2057 - C does not allow variables here int h[ArraySize1]; // OK - uses preprocessor constant }
3.E0169
报错类型:
解决方案:
1.在特殊字符后添加其他内容
2.将单行注释改为多行注释
4.E0040
报错类型:
解决方案:
验证语句中的所有属性是否都放在开头。
验证语句中所有元素名称的拼写是否正确。
另请参阅
已声明的元素名称 (Visual Basic)
特性概述 (Visual Basic)
5.E0029
报错类型:
解决方案:
在前面输入代码结构中缺少的表达式,在提示错误的地方附近检查一下空格,最好把那附近的空格都用英文输入法再次输入一次。
6.E0020
报错类型:
解决方案:
根据当前的错误信息,可以试试下面的方法:
右键点击当前工程名,选择Properties-General-Windows SDK Version是不是选中了你已安装的Win10版本(你可以通过运行Visual Studio Installer,选中已安装的VS,修改来查看独立组件下已勾选的Windows sdk版本).
关闭当前VS,以管理员身份运行Visual Studio Installer,选择更多-修复来修复下VS测试下。
7.C6262
报错类型:
解决方案:
8.C4244
报错类型:
解决方案:
整数类型转换为更小的整数类型。 如果 type1 为 int 且 type2 小于 int,则这是警告等级 4。 否则,它是等级 3(将 __int64 类型的值分配给 unsigned int 类型的变量)。 可能发生了数据丢失。
如果收到 C4244,则应将程序更改为使用兼容类型,或向代码添加一些逻辑,以确保可能值的范围将始终与你使用的类型兼容。
9.C2065
报错类型:
解决方案:
1.添加上详细的头文件
2.添加缺少的右引号
在for循环内使用迭代器
4.完善预处理命令。
10.C2143
报错类型:
解决方案:
加上相应的标识符和头文件即可解决。
11.LNK1168
报错类型:
LNK1168无法打开 xxx.exe 进行写入xxx```
解决方案:
1.Ctri + Shift + Esc 打开任务管理器,点击详细详细,找到对应的进程手动关掉。
2.方法一需要手动关闭,这挺麻烦的。能不能关闭窗口后,自动把这个程序关闭呢?在菜单中的工具 -> 选项, 打开如下设置对话框,在调试分类下,有一项调试停止时自动关闭控制台,把它选上。
12.C2146
报错类型:
解决方案:
生成->清理解决方案->重新生成解决方案OK
13.C2069
报错类型:
解决方案:
使用正确的格式转换符
14.C3861
报错类型:
解决方案:
在自定义的头文件中加上去即可解决该报错。
15.E0127
报错类型:
解决方案:
因为在16行 至19行间缺少语句,如果没有需要执行的语句,可以输入 ‘;’ 。
或者将第16行 和 19行语句归并为一句:if(cnt > val) {while()… }即可解决该报错。
16.C2181
报错类型:
解决方案:
if后面多了分号,导致if实际上为空,下面大括号内实际上是一个代码块,而不是if的结构体,所以把if后面的分号删除即可解决。
17.C2466
报错类型:
``c
error C2466: cannot allocate an array of constant size 0`
解决方案:
错误提示比较明确,n 应该是常量表达式,修改为常量即可解决。
18.C2057
报错类型:
解决方案:
应输入常量表达式,上下文要求输入常数表达式,即其值在编译时已知的表达式。
编译器在编译时必须知道类型的大小,以便为该类型的实例分配空间。