我在Linux下用C语言重写malloc
我想要把所有的函数除了malloc外全部设为static
但是由于格式要求限制 一个文件中不能写5个以上的函数 所以我必须要写几个文件
这样的话 能否使得我写的函数相互之间可以调用 但对外只有重写的malloc可见?
我写的其他函数都是为了重写malloc
也就是说其他函数都会被我的malloc直接或间接的用到
并且几个文件都有相互的include……
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); /*å¤é¨å½æ°å®ä¹*/
{ â¦â¦ }
不能,C语言中的static函数,内部函数和外部函数,函数一旦定义后就可被其它函数调用。
当一个由多个组成时,在一个源文件中定义的函数能否被其它源文件中的函数调用,C语言又把函数分为两类。
如果在一个源文件中定义的函数只能被本文件中的函数调用,而不能被同一源程序其它文件中的函数调用, 这种函数称为内部函数。
内部函数也称为静态函数,但此处静态static 的含义已不是指存储方式,而是指对函数的调用范围只局限于本文件。
外部函数在整个源程序中都有效,其定义的一般形式为extern 类型说明符 函数名形参表。
C语言中static函数,只能被本文件中的函数所使用,别的c文件中不能访问这个函数,而且你可以在别的文件中定义与之同名的函数,不会互相干扰。
你可以将malloc单独提取,放在一个c文件中,然后其余的不需要对外可见的,你在static修饰。
不知道你static函数定义那么多,这些文件之间还有include关系没?没有include关系其实也不需要管那么多~~~追问
这些文件之间都有相互调用关系 都有include其他文件的.h
另外我不是很懂你的意思
你说让我把malloc单独放 然后其余的不需要对外可见的用static修饰
malloc不就不能调用我写的其他的函数了?
也可能是我没解释清楚?我写的其他函数都是为了重写malloc 也就是说其他函数都会被我的malloc直接或间接的用到