我正在尝试将c程序分解为两个不同的文件。我正在使用静态函数,我想知道这将如何影响我转换到两个文件。我希望我的所有功能都在一个文件中,而所有的功能都在另一个文件中。使用静态函数需要做的是两个不同的文件?
答案 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(),或者错误地调用它, 编译器将告诉您需要完成所有更改/修复的位置。
在任何情况下,如果您希望在特定源文件之外可以看到任何内容,那么最好不要使用静态'属性。 因为静态属性的目的是使源文件外的任何静态不可见。
======