java 函数名调用_粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数...
问题描述:
某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(..)),用另外一个函数fun_2(),可是fun_2最后也需要调用fun_1,上面的失效方法感觉就不行了,请问怎么做才对?
我把问题简单整理下:
- 我们库文件里有个函数是read()
- 我们现在要自己定义一个名字一样的函数read(),
- main()函数首先调用我们自己定义的函数read()
- 自己定义的函数,要再定义库文件中的read()函数。
粉丝提问,必须安排!一口君实力宠粉!
想学习C语言、Linux、驱动、ARM的同学可以加一口君微信,拉你进群。
解决思路-static
如果我们要使用一个和库函数相同名字的函数,就要借助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.c1 #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 failn");16 return;17 }18 read(fd,buf,16);19 printf("enter test():%sn",buf);20 }//123.c1 #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
java 函数名调用_粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数...相关推荐
- Python什么是闭包、闭包特征、定义闭包传入一个数求和并输出,定义一个装饰器:打印函数运行花费的时间,定义一个类:要求:包含一个对象属性,且用_(单下划线)命名的定义一个类方法(装饰器)
1. 闭包.闭包特征及应用 1.1 什么是闭包? 闭包就是外部函数中定义一个内部函数,内部函数引用外部函数中的变量,外部函数的返回值是内部函数; 闭包是由函数及其相关的引用环境组合而成的实体(即:闭包 ...
- C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数.在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的 ...
- 如何通过JNI在Java中调用C库函数
使用Java语言进行开发时,可能由于处理速度.硬件控制或者复用既有的C/C++模块等方面的原因,需要Java层与使用C/C++编写的应用.模块或库进行交互,共同完成某些任务.在两者之间充当连接桥梁作用 ...
- c和java哪个难_为什么说 C 语言比 Java 难?
现有答案都提出了各个方面的观点,我觉得很多都挺有道理的. 我这里努力总结整理一下. 从学习角度上说,很多人认为C语言单纯简单,其实比Java要容易. 我认为,如果要把本质学懂,确实如此,而且在学懂C语 ...
- C语言与JAVA内存管理_深入理解C语言内存管理
之前在学Java的时候对于Java虚拟机中的内存分布有一定的了解,但是最近在看一些C,发现居然自己对于C语言的内存分配了解的太少. 问题不能拖,我这就来学习一下吧,争取一次搞定. 在任何程序设计环境及 ...
- python中可以使用变量来引用函数吗_如何在python语言中使用函数变量并调用函数...
在python语言中,除了常规变量之外,还有函数变量.把函数本身赋值给变量,这个变量为函数变量. 工具/原料 python pycharm 截图工具 WPS 方法/步骤 1 在已新建的python文件 ...
- C++提高部分_C++函数模板_注意事项---C++语言工作笔记082
然后我们再来看,c++函数模板使用的时候,两个需要注意的问题 上面我们先写上,一个模板 template 可以看到这里template,我没有用typename,这个typename实际上也可以 替换 ...
- C语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数
某个函数fun_1()是在lib内,没法修改的,在程序中大量的使用了该函数,现在想把原本fun_1失效(现在失效的方法是#define fun_1(..)),用另外一个函数fun_2(),可是fun_ ...
- C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0。在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是
原题: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数,若为素数函数返回值为1,否则为0.在主函数中输入一个整数x,调用函数isprime(x)来判断这个整数x是不是 ...
最新文章
- jsp 出现cannot be resolved to a type问题解决办法
- 何恺明大神新作--UnNAS:无监督神经网络架构搜索
- Linux内核设计与实现读书笔记
- 初中信息技术说课python_第一单元 走进Python 编程世界
- 挑战马斯克的Neuralink,另一家神秘的「脑机接口」公司已获投资
- windows下解决pip安装出错问题
- leetcode - 898. 子数组按位或操作(使用了集合)
- 《游戏大师Chris Crawford谈互动叙事》一1.1 故事叙述的历史
- [翻译] PPDragDropBadgeView
- 企业级MySQL数据库备份方案:增量备份、全量备份、逻辑备份
- matlab exprnd函数,Matlab 用 exprnd 函数生成符合指数分布的随机数
- 内控堡垒机:内网安全威胁的“终结者”
- Smart SVN客户端使用
- 推荐程序员收藏的几个技术社区以及工具网站
- 什么是结构体【详解】
- 学习python-day01-13---转自Python分布式爬虫打造搜索引擎Scrapy精讲
- 厉害!6 岁学编程,19 岁收月薪 2 万 的 Offer | 程序人生 2020
- git与gerrit基础概念
- 局域网arp攻击_MAC与IP不得不说的故事--深入ARP工作原理
- Eclipse 3.6 M7(太阳神版)发布
热门文章
- Hadoop大数据分布式文件系统hdfs的Java操作
- Apache Shiro 框架简介和下载导入
- ajax向服务端发送请求验证用户名是否可用小示例
- paddlepaddle测试安装_PaddlePaddle升级解读 | 十余行代码完成迁移学习,PaddleHub实战篇...
- Java中外部类访问内部类的方法
- 汉诺塔-递归算法深入理解
- Java注解原来如此通俗易懂
- pythoncharm快捷键_Pycharm最常用的快捷键及使用技巧
- JQuery:实现列表展开和缩放
- IDE / Qt / 浅谈 qmake 之 pro、pri、prf、prl文件