某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(…)),用另外一个函数fun_2(),可是fun_2最后也需要调用fun_1,上面的失效方法感觉就不行了,请问怎么做才对?
我把问题简单整理下:
粉丝提问,必须安排!一口君实力宠粉!
想学习C语言、Linux、驱动、ARM的同学可以加一口君好友。
如果我们要使用一个和库函数相同名字的函数,就要借助static关键字。
在函数的返回类型前加上static,就是静态函数。其特性如下:
系统调用函数read(),定义如下:
现在我们想定义一个自己的函数,名字也是read,要如何操作呢?
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
static void read()
{
printf("my read func()\n");
}
int main()
{
read();
}
我们可以看到,虽然我们添加了系统调用read()的头文件,但是调用的是我们自己定义的read()函数。
下面我们来看下,如果我们定义的read函数又想调用系统调用read()函数应该怎么办呢?
那就必须再增加一个文件,把相关功能放到另外一个文件中,在同一个文件中是没有办法实现的。
上代码,不上代码,没有论据的知识点都是耍流氓。一口君绝大部分文章都是有实例代码支撑,
//test.c
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include <fcntl.h>
5
6
7 void test()
8 {
9 int fd;
10 char buf[128]={
0};
11
12 fd = open("123.c",O_RDWR);
13 if(fd<0)
14 {
15 perror("open fail\n");
16 return;
17 }
18 read(fd,buf,16);
19 printf("enter test():%s\n",buf);
20 }
//123.c
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include <fcntl.h>
5
6 extern void test();
7 static void read()
8 {
9 printf("my read func()\n");
10 test();
11 }
12 int main()
13 {
14 read();
15 }
执行结果
由执行结果可知,程序既调用到了我们自己调用的read()函数,也调用到了系统调用函数read().
函数调用关系如下:
更多嵌入式Linux 入门的知识 ,请关注 一口Linux
文章浏览阅读1.5k次。npm包安装/升级,npm i --save和–save-dev区别,dependencies和devDependencies区别,package.json文件中版本号含义目录npm包安装/升级,npm i --save和--save-dev区别,dependencies和devDependencies区别,package.json文件中版本号含义npm包安装/升级package.json中安装依赖分类npm i --save和 npm i --save-dev区别package.json 文件中版本号含_npm 升级 devdependencies
文章浏览阅读531次。TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法_get-executionpolicy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
文章浏览阅读207次。 断除烦恼的方法,要让自己的情绪不当回事,情绪是假的。抑郁症、强迫症等各种症状的病人的脑子里有一些回路,这些回路建立以后,这些回路就是佛教里的“妄念”,当妄念一旦产生,越想它,它的变形越厉害,最后它产生的想法,和真实世界是完全不靠谱的。 就像一个人失恋了想要自杀一样,可能半年之后,发现自己当时怎么那么可笑,那就是在失恋那个阶段,回路建立了。..._把自己情绪不当回事,情绪是假的,情绪容易形成回路,就是佛教的妄念,当妄念一旦
文章浏览阅读736次。参考网址:http://www.doc88.com/p-461115156632.html一.Java程序调试与错误收集 1.Web程序的调试与排错:尽量使用System.out.println();和打印hql语句的方式跟踪查错 (1).非代码引起的报错 ①.jar包引起的错误:当从版本控制器上下载项目时,如果项目报错但是所有类文件和配置文件和所有手动..._; nested exception is java.lang.error: unresolved com
文章浏览阅读215次。JavaFX2开发教程更新时间:2017/1/24 18:04:00浏览量:851手机版第一回 JavaFX2.0简介javaFX2.0是JavaFX最新的主要升级发布版。它的很多新特性并不能和1.3版本兼容。如果想要用javaFX做开发,推荐使用2.0版本。建立SDK开始使用javafx的第一步就是在你的电脑上下载和安装javafx SDK。你可以安装完整版SDK,也可以只安装javaF..._javafx-sdk-20 api
文章浏览阅读912次,点赞29次,收藏18次。学完之后,若是想验收效果如何,其实最好的方法就是可自己去总结一下。比如我就会在学习完一个东西之后自己去手绘一份xmind文件的知识梳理大纲脑图,这样也可方便后续的复习,且都是自己的理解,相信随便瞟几眼就能迅速过完整个知识,脑补回来。下方即为我手绘的Android框架体系架构知识脑图,由于是xmind文件,不好上传,所以小编将其以图片形式导出来传在此处,细节方面不是特别清晰。但可给感兴趣的朋友提供完整的Android框架体系架构知识脑图原件(包括上方的面试解析xmind文档)
文章浏览阅读684次,点赞2次,收藏3次。母亲节,晓虎和晓波兄弟俩想要买一只宠物狗送给母亲,他们来到萌宠之家,询问店家所有宠物狗的编号、名称、价格等相关信息,但是他们觉得这样很不方便,正在学习编程的兄弟俩帮店家编写了一个宠物狗信息系统,记录了所有宠物狗的信息,可以快速查询所有狗狗的价格。假设列表list1=[‘安徽’,’江苏’,’浙江’,’广西’,’山东’,’山西’,’湖南’,’湖北’],写出程序的运行结果。4、编写一个程序,用于统计字符串”ab2b3n5n2n67mm4n2”中字符n出现的次数,并把列表中的字符串中的字符进行倒排。_python列表题目
文章浏览阅读273次。一直使用好好的mysql命令,突然今天抽风,无论使用任何mysql选项都报“段错误(coredumped)”,以为是mysqld程序出问题了,所以我尝试重启,因为我的环境上是多实例,用了mysqld_multi来管理,没想到一敲mysqld_multi命令也报错:shell >/usr/local/mysql/bin/mysqld_multistop3306-3308m..._mysql段错误(吐核)
文章浏览阅读334次。通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?(转)一、总结一句话总结:.NET是一个平台,包含多种语言,比如(C#、Visual Basic、C++/CLI、Eiffel、F#、IronPython、IronRuby、PowerBuilder、Visual COBOL 以及 Windows PowerShell),而作为一个开发者平台,它不仅..._.net core程序转化为.net framework
文章浏览阅读6.1k次。用dockerfile文件制作镜像,提高pip下载速度1 安装pip3,python3RUN apt-get updateRUN apt-get install -y python3.5 RUN apt-get install -y python3-pip 2 更新pip,至最新RUN pip3 install pip -U3 配置阿里源RUN pip3 config set..._docker pip太慢
文章浏览阅读411次。2019独角兽企业重金招聘Python工程师标准>>> ..._sql=错误
文章浏览阅读174次。首先我们要知道此实践是基于改变目标网段,而不是SNAT那样改源网段。(1)为我们的主机添加路由:(2)我们对第二台主机用iptables进行修改:重点参数是–to-destination 后面跟我们的真实主机地址,我们的第二台主机只是对外宣称的ip网段只要外部来访问我们的第三台仅主机,我们的路由器(第二台虚拟机)就会将它的目标地址转换为真正的服务器ip..._防火墙dnat 实例