多个文件中的静态函数

时间:2014-12-04 01:27:50

标签: c function static

我正在尝试将c程序分解为两个不同的文件。我正在使用静态函数,我想知道这将如何影响我转换到两个文件。我希望我的所有功能都在一个文件中,而所有的功能都在另一个文件中。使用静态函数需要做的是两个不同的文件?

3 个答案:

答案 0 :(得分:1)

static表示对其他文件不可见。请学习基础知识。

答案 1 :(得分:0)

C中静态函数的链接只在一个文件中,因此可以调用不同源文件中的静态函数。 所以你可能需要这个

在a.c

int bar(){return 1;}

int b.c将调用bar函数

int bar(); /*declaration the function type*/
void foo(){bar();} /* just call it*/

答案 2 :(得分:0)

最强大的解决方案是首先声明全局可见'函数在头文件中,然后在定义或引用函数的所有函数中包含此头文件。


app.h:

#ifndef _APP_H    //why this? left as an excercise for the reader ;-)
#define _APP_H
...
//declare fun()
extern   int   fun(char * strArg);
...
#endif

def.c:

#include "app.h"
//define fun()
int   fun(char * strArg)
{
   ....
}

ref.c:

#include "app.h"
....
//reference fun()
int ret = fun("this is a test");
....

==========

这样你就可以确保对fun()的所有引用都正确地调用它。 如果您碰巧以任何方式更改fun(),或者错误地调用它, 编译器将告诉您需要完成所有更改/修复的位置。

在任何情况下,如果您希望在特定源文件之外可以看到任何内容,那么最好不要使用静态'属性。 因为静态属性的目的是使源文件外的任何静态不可见。

======