C语言函数调用错误信息打印
错误打印
- 说明
- 所需头文件
- PERROR()
- STRERROR()
- 两个宏说明:
- __FILE__(左右各两个下划线未显示)
- __LINE__(左右各两个下划线未显示)
- 其他函数:
说明
我的目的是在程序调用函数的时候,返回错误原因+那个文件内被调用+所在文件行号,如:端口已被使用[to_listen.c:21]
在调试程序的时候,函数返回结果为错误,但是一直不知道是什么原因报的错,我就想到了标准错误。以前没用过,所以自己尝试了一下,找到errno。每次用gdb调试,都是用“p errno”得到错误号,在去百度“linux错误处理与错误号_百度文库”找出对应的宏。接着man出错的那个函数,看他“errors”对应宏素表示的错误。我发现这样很麻烦,因为我需要的就是“表示的错误”的意思。所以我关注了一下“perror()”和“strerror()”函数。一个是直接输出给2号句柄,及标准错误,会在屏幕上立即显示(标准错误未重定向)。一个是返回错误信息的字符串指针,可以选择不输出,也可以更灵活的打印出来。
所需头文件
#include<errno.h>
#include<string.h>
PERROR()
对于我来说,缺点就是最多只能传一个参数(char*类型),当然也可以不传参。因为参数的限制,一行我只能打印文件名+错误原因。
例子
21 int tobind=bind(mysocket,(struct sockaddr*)&mysockaddr_in,sizeof(mysockaddr_in));22 if(tobind!=0){23 perror(__FILE__);24 return 0;25 }
结果:to_listen.cThe given address is already in use.
STRERROR()
更自由的打印错误,可以不显示不想要的信息,添加自己想要的信息。
例子
21 int tobind=bind(mysocket,(struct sockaddr*)&mysockaddr_in,sizeof(mysockaddr_in));22 if(tobind!=0)23 {24 printf("ERRO:%s[%s:%d]\n",strerror(errno),__FILE__,__LINE__-3);25 return 0;26 }
结果:ERRO:The given address is already in use.[to_listen.c:22]
两个宏说明:
各位最好用MSDN等去看一下相关的所有的宏,因为我这里值用到了两个,所以我也只说着两个。
FILE(左右各两个下划线未显示)
当前函数所在文件名字符串
LINE(左右各两个下划线未显示)
此宏所在行数。网上看,因为bind函数在21行,而我宏在24行被使用,所以在printf里我执行了“-3”操作。
其他函数:
error();error_at_line(推荐使用);
如果果味大佬觉得还阔以的话,就点个收藏再点个赞才走吧。
C语言函数调用错误信息打印相关推荐
- C语言函数:错误信息打印函数,strerror()与perror()
C语言函数:错误信息打印函数,strerror()与perror() strerror: C语言函数: 字符串函数及模拟实现strtok().strstr().strerror()_srhqwe的博客 ...
- springMVC,aop管理log4j,把当前session信息和错误信息打印到日志
((((其实还是不太理解aop的正真意义但是这样可以实现想要的了,我的感觉是执行一个方法时首先通过filter( 这个fiter可以不配置,之所以要他是因为在aop切入的方法session消失了,我们 ...
- c语言编译错误信息详细解释,C语言编译错误信息说明大全
C说明 #operator not followed by maco argument name #运算符后没跟宏变元名 Ambiguous operators need parentheses 不明 ...
- f12控制台如何查看consul_如何打印consul的错误信息
在配置文件中添加 management: endpoints: web: exposure: include: "*" endpoint: shutdown: enabled: t ...
- c语言各种输出错误提示,C语言错误处理-输出错误信息
C语言错误处理-输出错误信息 程序开发过程中,不可避免地会因为细节疏忽导致程序的编译.运行出错,当出现错误时编译器一般会将错误信息展示出来,但由程序操作或用户输入导致的错误往往会使程序直接崩溃并无任何 ...
- C语言错误信息中文解释
[引用 <智能家电控制技术>帮助文档 这里有很是HTML版的,很实用好查,但就是不能下载成CHM版的,本地是不能用啊.] 1.#operator not followed by macr ...
- C语言中返回错误信息的函数总结
C语言strerror()函数:返回错误原因的描述字符串 头文件: #include <string.h> 定义函数: char * strerror(int errnum); 函数说明: ...
- linux c 打印错误信息error errno perror和strerror的区别
1 perror 头文件:stdio.h void perror(const char *msg); 它是基于errno的当前值,在标准错上产生一条出错信息,然后返回. 它先输出由msg字符串 ...
- 【原】iOS学习之Xcode8关于控制台不打印错误信息
前几天将我的Xcode升到了8,但是在运行程序时,会打印很多没有用的信息,如下图: Xcode8运行程序时打印的乱码 于是各种寻求答案,找到如下答案: Edit Scheme-> Run -&g ...
最新文章
- XGBoost4J-Spark基本原理
- Windows Store App JavaScript 开发:小球运动示例
- Git安装以及操作过程
- 【struts2】struts2的一些常用高级应用
- java 字符串子串_java实现字符串匹配求两个字符串的最大公共子串
- mfc ajax爬虫,另辟蹊径,爬取Ajax数据内容
- JavaScript获取当前月的第一天和最后一天日期
- SpringApplication#run⽅法第5步,打印banner(四)
- Egg.js上传图片总结
- VS插件——Javascript parser
- java语言判断101到200之间素数
- 如何生成随机验证码图片
- 【视频通话卡顿】【语音通话卡顿】PC端QQ、微信每天接通语音电话或视频通话总会出现首卡半分钟左右的童鞋请进
- 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息
- 基于SpringBoot+Vue的酒店管理系统(免费获取源码+项目介绍+运行介绍+运行截图+论文)
- AirServer最新Win64位个人版投屏软件
- 使用SQL Server管理数据表
- 猿人学第1题(一天搞一个)
- SRS:流媒体服务器如何实现负载均衡
- Windows 更新安装更新时,可能会收到“更新失败。安装一些更新时出现问题,且错误为:0x80073701,0x800f0988解决方案
热门文章
- python如何使用图片做背景_如何用python裁剪白色背景上的图像?
- android亮屏解锁demo
- animate.css 官方,Animate中文网
- Github爆火!21岁理工男开源的十六进制编辑器爆赞
- 0x68111002_R9 370 2G驱动成功10.14.3 (18D109),但是HDMI黑屏
- Wmm的学习日记(文件包含漏洞.PHP伪协议)
- Matlab pwelch函数参数意义
- 普通人如何靠自媒体写作赚钱?到月入过万,只因做对了3点
- 22_国际短信国家代码sql脚本
- Windows取证分析基础