C语言_VS系列编译器写C语言或C++代码产生的一些错误与警告的解决方法(VS2010/VS2019)

news2025/1/20 16:21:36

  本次来分享在用VS系列编译(VS2010/VS2019)写C语言或C++代码时会遇到的一些警告和错误,提供博主的一些解决方法,若有更好的解决方法,大家也可以在评论区发表自己的意见噢,话不多说,开始上菜:

此博主在CSDN发布的文章目录:我的CSDN目录,作为博主在CSDN上发布的文章类型导读

目录

  • 1.警告
    • 1.1.warning C4305从“double”到“float”截断
    • 1.2.warning C4700使用了未初始化的局部变量
    • 1.3.warning C4996的警告
    • 1.4.warning C4068未知的杂注
    • 1.5.warning C4091没有声明变量时忽略“int”的左侧
      • 1.5.1.示例1:没有声明变量时忽略“int”的左侧
    • 1.6.warning C4101未引用的局部变量
      • 1.6.1.示例1:未引用的局部变量
    • 1.7.warning C4244从“float”转换到“int”,可能丢失数据
      • 1.7.1.示例1:从“float”转换到“int”,可能丢失数据
    • 1.8.warning C4553: “==”: 运算符不起任何作用;是否是有意使用“=”的?
  • 2.错误
    • 2.1.error LNK2019
    • 2.2.error LNK1104
    • 2.3.error C1903无法从以前的错误中恢复;正在停止编译
    • 2.4.error C2010“:”: 宏形参表中的意外
    • 2.5.errorC2039不是结构体的成员
    • 2.6.error C2040“char [10]”与“int”的间接寻址级别不同
    • 2.7.error C2059语法错误
    • 2.8.error C2062意外的类型“int”
    • 2.9.error C2065未声明的标识符
    • 2.10.error C2109: 下标要求数组或指针类型
    • 2.11.error C2117数组界限溢出
    • 2.12.error C2143语法错误 : 缺少“;”(在“}”的前面)
    • 2.13.error C2146语法错误
    • 2.14.error C2181: 没有匹配 if 的非法 else
    • 2.15.error C2228左边必须有类/结构/联合
      • 2.15.1.示例1:“.stu_id”的左边必须有类/结构/联合
    • 2.16.error C2440无法从“char \[2][10]”转换为“char *”
      • 2.16.1.示例1:: “初始化”: 无法从“char [2][10]”转换为“char *”
    • 2.17.error C2446没有从“int”到“char *”的转换
    • 2.18.error C2561函数必须返回值
    • 2.19.error C2562 void函数返回值
    • 2.20.error C2664不能将参数 1 从“char [2][10]”转换为“const char *”
    • 2.21.error C2665 重载中没有一个可以转换所有参数类型
      • 2.21.1.示例1“strchr”: 2 个重载中没有一个可以转换所有参数类型
    • 2.22.error C2668: 对重载函数的调用不明确
    • 2.23.error C3861找不到标识符
    • 2.24.error C4716函数返回值

1.警告

1.1.warning C4305从“double”到“float”截断

  float b=234.45;
  warning C4305: “初始化”: 从“double”到“float”截断

参考解决办法:
    将float b=234.45;改成float b=234.45f;,数据类型截断,一般是长类型的数据给了短类型,所以数据会被截断,显示不完全。

1.2.warning C4700使用了未初始化的局部变量

  warning C4700: 使用了未初始化的局部变量“b2”

参考解决办法:
    给b2初始化赋值

1.3.warning C4996的警告

  warning C4996: ‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details

参考解决办法(来自4996的警告都可以采用该方法):
  方法1:开头加上#pragma warning(disable:4996)
  方法2:开头加上#define _CRT_SECURE_NO_WARNINGS
  若有多个文件,请在解决方案的属性中的预处理器中添加该宏,如图:
在这里插入图片描述

1.4.warning C4068未知的杂注

  warning C4068: 未知的杂注

参考解决办法:
  一般是写错某个关键字或者无法解析该关键字,找到改正就好

1.5.warning C4091没有声明变量时忽略“int”的左侧

1.5.1.示例1:没有声明变量时忽略“int”的左侧

  warning C4091: “”: 没有声明变量时忽略“int”的左侧

参考解决办法:
  一般是没有声明变量时没有写变量名

1.6.warning C4101未引用的局部变量

1.6.1.示例1:未引用的局部变量

  warning C4101: “f”: 未引用的局部变量

参考解决办法:
  没有引用局部变量,删除局部变量就好

1.7.warning C4244从“float”转换到“int”,可能丢失数据

1.7.1.示例1:从“float”转换到“int”,可能丢失数据

  warning C4244: “=”: 从“float”转换到“int”,可能丢失数据

参考解决办法:
  两个不同类型的转换,要么强制转换(int),要么声明变量时修改其声明类型。

1.8.warning C4553: “==”: 运算符不起任何作用;是否是有意使用“=”的?

参考解决方法:
  首先需要理解==和=的作用,是关系运算符,判断的左边和右边是否相同,=是赋值运算符,所以需要找到该行,判断是否把运算符用错。

2.错误

2.1.error LNK2019

  error LNK2019: 无法解析的外部符号 “void __cdecl Show_s(void)” (?Show_s@@YAXXZ),该符号在函数 _main 中被引用

参考解决方法:
  是因为该函数只有声明没有定义,请重写该函数。

2.2.error LNK1104

  error LNK1104: 无法打开文件“C:\Users\Administrator\Desktop\C程序草稿\计算天数\Debug\计算天数.exe”

参考解决办法:
  可能是上次打开的.exe文件没有关闭,可以启动任务管理器找到计算天数.exe进程将其关闭

2.3.error C1903无法从以前的错误中恢复;正在停止编译

  error C1903: 无法从以前的错误中恢复;正在停止编译

参考解决办法:
  修改上次出现的错误

2.4.error C2010“:”: 宏形参表中的意外

  error C2010: “:”: 宏形参表中的意外

参考解决办法:
  宏中出现错误写法,检查一下

2.5.errorC2039不是结构体的成员

  errorC2039: “college”: 不是“student”的成员

参考解决办法:
  在结构体中找不到该成员,更改为正确的结构体成员

2.6.error C2040“char [10]”与“int”的间接寻址级别不同

1、error C2040: “==”:“char [10]”与“int”的间接寻址级别不同
2、error C2040: “!=”:“FILE *”与“int”的间接寻址级别不同

参考解决办法:
  式子两边的最后结果类型不一样,其对应保存数据的类型也不一样,寻址方式不同,需要使两边的结果类型一致

2.7.error C2059语法错误

1、error C2059: 语法错误:“}”
2、error C2059: 语法错误:“;”
3、error C2059: 语法错误:“)”

参考解决办法:
  1、一般是在 } 的前面缺少分号之类的。
  2、一般是在表达式的前面缺少分号
  3、写法错误,“)”此处缺少东西,不符合函数规定写法,检查之后补充正确写法就行

2.8.error C2062意外的类型“int”

  error C2062: 意外的类型“int”

参考解决办法:
  一般是在int的前面缺少分号之类的。

2.9.error C2065未声明的标识符

  错误error C2065: “p”: 未声明的标识符

参考解决办法:
  按系统提示声明未声明的标识符p

2.10.error C2109: 下标要求数组或指针类型

  error C2109: 下标要求数组或指针类型

参考参考解决办法:
  查看数组名是否正确。

2.11.error C2117数组界限溢出

  error C2117: “s1”: 数组界限溢出

参考解决办法:
  表示给数组赋值时超出了数组的长度,减少数组元素或增加数组的长度

2.12.error C2143语法错误 : 缺少“;”(在“}”的前面)

  error C2143: 语法错误 : 缺少“;”(在“}”的前面)

参考解决办法:
  多了}或少了}

2.13.error C2146语法错误

  error C2146: 语法错误: 缺少“;”(在标识符“puts”的前面)

参考解决办法:
  一般是写法错误,要么缺少括号,要么缺少分号,要么没有正确注释等。

2.14.error C2181: 没有匹配 if 的非法 else

参考解决办法:
  if和else不匹配,请检查是否少了if或者else。

2.15.error C2228左边必须有类/结构/联合

2.15.1.示例1:“.stu_id”的左边必须有类/结构/联合

  error C2228: “.stu_id”的左边必须有类/结构/联合

参考解决办法:
  查看.stu_id左边的结构体名是否正确,或者该结构体是否定义。

2.16.error C2440无法从“char [2][10]”转换为“char *”

2.16.1.示例1:: “初始化”: 无法从“char [2][10]”转换为“char *”

  error C2440: “初始化”: 无法从“char [2][10]”转换为“char *”
  error C2440: “=”: 无法从“bool”转换为“FILE *”

参考解决办法:
  表达式两边的类型不一致,检查是否正确转换(请查看类型转换)

2.17.error C2446没有从“int”到“char *”的转换

  error C2446: “==”: 没有从“int”到“char *”的转换
  “!=”: 没有从“int”到“FILE *”的转换

参考解决办法:
  使用的式子两边的最后结果类型不一样,需要定义一样的类型

2.18.error C2561函数必须返回值

  error C2561: “m_read”: 函数必须返回值

参考解决办法:
  return的时候带上返回值,例return 1;

2.19.error C2562 void函数返回值

  error C2562: “SS5”:“void”函数返回值

参考解决办法:
  去掉void函数的返回值或其返回无值

2.20.error C2664不能将参数 1 从“char [2][10]”转换为“const char *”

1、error C2664: “puts”: 不能将参数 1 从“char [2][10]”转换为“const char *”
2、error C2440: “=”: 无法从“bool”转换为“FILE *”

参考参考解决办法:
  1、检查类型转换是否一致,是否传错参数
  2、查看等式两边的类型是否一样

2.21.error C2665 重载中没有一个可以转换所有参数类型

2.21.1.示例1“strchr”: 2 个重载中没有一个可以转换所有参数类型

  error C2665: “strchr”: 2 个重载中没有一个可以转换所有参数类型

参考解决办法:
  函数参数的类型传得不对,检查传进去的参数类型和函数定义的参数类型是否一致。

2.22.error C2668: 对重载函数的调用不明确

  error C2668: “sqrt”: 对重载函数的调用不明确
  可能是“long double sqrt(long double)”
  或 “float sqrt(float)”
  或 “double sqrt(double)”

参考解决办法:
  查看sqrt的原型,是否有你传入的参数类型一样的函数定义,sqrt没有int类型的参数,可以强制转换成float。

2.23.error C3861找不到标识符

1、error C3861: “getcahr”: 找不到标识符
2、error C3861: “strlen”: 找不到标识符
3、error C3861: “m_2”: 找不到标识符

参考解决办法:
  1、一般表示写错系统封装好的函数名字,改正就好
  2、函数名写对,但依然找不到,那就是函数所需要的头文件没有包含进去
  3、自定义的函数找不到,查看是否声明和定义函数,注意,在main函数里声明的函数只能main函数调用

2.24.error C4716函数返回值

  error C4716: “m_5”: 必须返回一个值

参考解决办法
  给函数带上返回值。

  以上就是本次的分享了,希望对大家有所帮助,欢迎关注博主一起学习更多的新知识!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/556038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试题】Redis缓存设计

文章目录 Redis缓存出现的问题🙎‍♂️面试官:什么是缓存雪崩?🙎‍♂️面试官:怎样解决缓存雪崩?🙎‍♂️面试官:什么是缓存击穿?🙎‍♂️面试官:…

Nacos集群和持久化配置

1.Nacos集群 1.1.架构说明 官方文档 集群部署架构图 因此开源的时候推荐用户把所有服务列表放到一个vip下面,然后挂到一个域名下面 http://ip1:port/openAPI直连ip模式,机器挂则需要修改ip才可以使用 http://VIP:port/openAPI挂载VIP模式,直…

【TOOLS: Linux与windows及linux与linux之间文件传输常用方法及命令】

文章目录 1.1.1 Windows和VirtualBox(Ubuntu)之间文件穿传输方法1.1.2 SCP 文件传输方法1.1.3 FTP 文件传输方法 1.1.1 Windows和VirtualBox(Ubuntu)之间文件穿传输方法 1)设置 virtualbox 中的共享文件夹,用户可以在windows某个盘下创建自己的共享文件…

chatgpt赋能Python-python_6_66_666

Python 666666:学习Python的不同层次 Python是一种高级编程语言,被广泛用于机器学习、人工智能、web开发等领域。它简单易学,具有良好的可读性和可扩展性,因此受到众多程序员的喜爱。 在学习Python的过程中,我们可以…

python面向对象知识点

因为我之前学过Java,所以下文中的python面向对象知识点会和Java面向对象知识点比较记忆; python类的定义 python类的定义个其函数的定义格式相同,为此先复习函数定义格式: def add(num1, num2){return num1 num2 } 类定义格式…

自动构建之Makefile

链接: 自动构建之CMake Makefile Makefile是用于自动化构建软件项目的工具,Makefile的优点是简单、直接,可以直接使用make工具进行构建。但是,Makefile通常需要手动编写和维护,可能会导致跨平台和跨编译器的兼容性问题。 Makef…

【SVN内网穿透】远程访问Linux SVN服务

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

.Net Core 数据校验框架使用

为了提高响应速度和界面可用性,一般在客户端都会对用户填写的数据进行校验,这样不需要把数据发送到服务端,用户就知道数据填写错误。但是也不能完全依赖客户端的校验,不仅因为恶意用户可以绕过客户端校验直接向服务器发送请求&…

YOLOv5区域检测+声音警报

YOLOv5区域检测声音警报 1. 相关配置2. 检测区域设置3. 画检测区域线(不想显示也可以不画)4. 报警模块5. 代码修改5.1 主代码5.2 细节修改(可忽略) 6. 实验效果 本篇博文工程源码下载 链接1:https://github.com/up-up-…

图片模块封装

图片模块封装 一.如何更换图片框架二.Glide配置1.依赖: 三.策略模式构建者模式图片框架搭建1.ImageOptions图片参数设置2.IImageLoader接口以及实现子类3.图片加载策略4.ImageLoader5.ImageLoaderManager6.使用:四.Bitmap三级缓存二次采样五.长图大图处理 一.如何更…

华为OD机试真题 Java 实现【任务混部】【2023Q1 200分】

一、题目描述 公司创新实验室正在研究如何最小化资源成本,最大化资源利用率,请你帮他们解决一个任务混部问题: 有taskNum项任务,每个任务有开始时间(startTime ),结束时间(endTime…

Linux系统之cut命令的基本使用

Linux系统之cut命令的基本使用 一、cut命令介绍1. cut命令简介2.cut命令的由来 二、在Linux中命令帮助1. cut的help帮助信息2. cut的选项 三、cut的基本使用1. 指定字段的内容2. 使用分隔符打印文本内容3. 显示行中指定范围的字符 四、cut命令的日常使用1. 提取IP地址2. 提取本…

position:sticky-粘性吸附布局

一、描述 就是在一个滚动的容器里,将一个子元素设置为postion:sticky 在元素显示在可视区域内,显示的效果与position:relative 一致,当元素被滑动出可视区域外是,显示效果与position:fixed一致 二、注意事项 1、父元素需要存在滚动(overflow:auto&…

快速入门Springboot整合Datagpa操作数据库

简介SpringDatagpa Spring Data JPA是Spring Data家族的一部分,可以轻松实现基于JPA的存储库。 . JPA是ORM规范,Hibernate是JPA规范的具体实现,这样的好处是开发者可以面向JPA规范进行持久层的开发,而底层的实现则是可以切换的。S…

day5 套接字属性设置

选项的级别 SOL_SOCKET 该级别的选项只作用于套接字本身 SOL_LRLMP 该级别的选项作用于IrDA协议 IPPROTO_IP 该级别的选项作用于IPv4协议 IPPROTO_IPV6 该级别的选项作用于IPv6协议 IPPROTO_RM 该级别的选项作用于可靠的多播传输 IPPROTO_TCP 该级别的选项适用于流式…

信道通信基础 - 传输介质(双绞线、光纤)

文章目录 1 概述2 传输介质2.1 双绞线2.2 光纤 3 扩展3.1 网工软考真题 1 概述 2 传输介质 2.1 双绞线 双绞线:8 根铜导线每 2 根扭在一起(百兆用 4 根,千兆必须用 8 根)分类 2.2 光纤 光纤:利用光在 玻璃或塑料纤…

很长一段时间没有用Ubuntu,无法获得锁**,锁正由进程***持有

问题分析:意思就是有另一个进程占用了apt-get,因为Ubuntu锁的访问机制是互斥的,即同一时间只能允许一个进程占用,只需要将那个占用的进程强制删除掉就行了。 使用如下两条命令即可: sudo rm /var/lib/dpkg/lock-fron…

藏在大神们收藏夹里的实用工具类网站!

今天来给大家分享几个大神们推荐的,藏在收藏夹里的宝藏工具类网站 Toolfk https://www.toolfk.com/ 一款程序员的工具箱,里面包含非常多实用工具,不仅有各种程序相关功能,还有很多不懂程序人也能用的简易功能。PHP在线加密工具、…

docker-compose 搭建maven私服 nexus与配置

目录 创建文件目录 docker-compose.yml文件 登录 配置 创建阿里云代理仓库 配置仓库顺序 maven配置文件setting.xml配置 本地jar包部署 在linux上搭建 创建文件目录 mkdir -p /apps/minio/{config,data,logs} 赋权限 chmod -R 777 data docker-compose.yml文件 version…