c内部函数问题

[复制链接]
查看11 | 回复2 | 2010-11-4 12:21:49 | 显示全部楼层 |阅读模式
一个在函数前加static,就只能被同一文件内的其他函数调用。
为什么我在file1里还可以调用file2里的 power 函数?
我认为是include"file2.c"这样power 和 fun 就在一个文件里了
要使用其他文件里的外部函数一定要包括,一定要包括那个文件吗?
file1.c
#include
#include"file2.c"
int A;
void fun(){

extern int power(int);

int b=3,c,d,n;

printf("enter A,N:\n");

scanf("%d %d",&A,&n);


printf("%d\n",power(n));

while(1);
}
int main(){

fun();

return 0;
}
fil2.c
//extern int A;
static int power(int n){
int i,y=1,B=5;
for(i=1;i<=n;i++) y*=B;
return y;
}

回复

使用道具 举报

千问 | 2010-11-4 12:21:49 | 显示全部楼层
问:要使用其他文件里的外部函数一定要包括,一定要包括那个文件吗?答:可以写包含正如你这里写的:#include"file2.c"
也可以不写包含,先分别make为obj,再link多个obj.
只是一般IDE帮你做了这个过程,过去我们用命令行就分别执行这些命令的。你在dos状态下,也可以执行这个过程。
那么此时,你会发现,你在file2里写的static power,如果你的file1里没有包含它,那就不能用power了问:一个在函数前加static,就只能被同一文件内的其他函数调用。为什么我在file1里还可以调用file2里的 power 函数?答:直接include是可以的。因为#includ
回复

使用道具 举报

千问 | 2010-11-4 12:21:49 | 显示全部楼层
因为你用了#include"file2.c"相当于把fil2.c 插入到 #include 的 位置。两个文件成一个文件。如果去掉 #include"file2.c",再 分别编译两个文件成 .obj, 再链接。有static 和 无 static 应当 不同。cl -c file1.ccl -c file2.ccl fi
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行