C语言中 其他文件可否调用文件中的static函数?

我在Linux下用C语言重写malloc我想要把所有的函数除了malloc外全部设为static但是由于格式要求限制一个文件中不能写5个以上的函数所以我必须要写几个文件这... 我在Linux下用C语言重写malloc
我想要把所有的函数除了malloc外全部设为static
但是由于格式要求限制 一个文件中不能写5个以上的函数 所以我必须要写几个文件
这样的话 能否使得我写的函数相互之间可以调用 但对外只有重写的malloc可见?

我写的其他函数都是为了重写malloc
也就是说其他函数都会被我的malloc直接或间接的用到
并且几个文件都有相互的include……
展开
 我来答
东哥zld
推荐于2016-11-30 · 机械自动化爱好者
东哥zld
机械自动化爱好者
采纳数:204 获赞数:17732
毕业不久,正在努力创造自己的骄傲

向TA提问 私信TA
展开全部
不能。

C语言中的static函数:

内部函数和外部函数

函数一旦定义后就可被其它函数调用。但当一个源程序由多个源文件组成时,在一个源文件中定义的函数能否被其它源文件中的函数调用呢。为此,C语言又把函数分为两类:

一、内部函数

如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序其它文件中的函数调用, 这种函数称为内部函
数。定义内部函数的一般形式是: static 类型说明符 函数名(形参表) 。
例如:
static int f(int a,int b) 内部函数也称为静态函数。但此处静态static 的含义已不是指存储方式,而是指对函数的调用范围只局限于本文件。 因此在不同的源文件中定义同名的静态函数不会引起混淆。

二、外部函数
外部函数在整个源程序中都有效,其定义的一般形式为: extern 类型说明符 函数名(形参表) 例如:
extern int f(int a,int b)如在函数定义中没有说明extern或static则隐含为extern。在一个源文件的函数中调用其它源文件中定义的外部函数时,应用extern说明被调函数为外部函数。例如:
F1.C (源文件一)
main()
{ extern int f1(int i); /*外部函数说明,表示f1函
数在其它源文件中*/ …… }
F2.C (源文件二)
extern int f1(int i); /*外部函数定义*/
{ …… }
鹰的飞翔sunjun
2018-04-08 · TA获得超过2.5万个赞
知道小有建树答主
回答量:38
采纳率:91%
帮助的人:1.3万
展开全部

不能,C语言中的static函数,内部函数和外部函数,函数一旦定义后就可被其它函数调用。

  1. 当一个源程序由多个源文件组成时,在一个源文件中定义的函数能否被其它源文件中的函数调用,C语言又把函数分为两类。

  2. 如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序其它文件中的函数调用,   这种函数称为内部函数。

  3. 内部函数也称为静态函数,但此处静态static 的含义已不是指存储方式,而是指对函数的调用范围只局限于本文件。

  4. 外部函数在整个源程序中都有效,其定义的一般形式为extern   类型说明符   函数名形参表。

  5. C语言中static函数,只能被本文件中的函数所使用,别的c文件中不能访问这个函数,而且你可以在别的文件中定义与之同名的函数,不会互相干扰。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icecoobe
2012-05-27 · TA获得超过1989个赞
知道小有建树答主
回答量:1058
采纳率:100%
帮助的人:1071万
展开全部
C语言中static函数,只能被本文件中的函数所使用,别的c文件中不能访问这个函数,而且你可以在别的文件中定义与之同名的函数,不会互相干扰。

你可以将malloc单独提取,放在一个c文件中,然后其余的不需要对外可见的,你在static修饰。
不知道你static函数定义那么多,这些文件之间还有include关系没?没有include关系其实也不需要管那么多~~~
追问
这些文件之间都有相互调用关系 都有include其他文件的.h

另外我不是很懂你的意思
你说让我把malloc单独放 然后其余的不需要对外可见的用static修饰
malloc不就不能调用我写的其他的函数了?

也可能是我没解释清楚?我写的其他函数都是为了重写malloc 也就是说其他函数都会被我的malloc直接或间接的用到
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wj523588
推荐于2017-11-25
知道答主
回答量:5
采纳率:0%
帮助的人:3.3万
展开全部
不能
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式