| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2428 人关注过本帖
标题:怎样用static封装一个函数
取消只看楼主 加入收藏
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
结帖率:73.08%
收藏
已结贴  问题点数:20 回复次数:7 
怎样用static封装一个函数
/*怎样用static封装定义一个函数,别的函数都不可以调用它(函数的作用范围)
请给出示例代码*/
这个代码虽然没有错误,可是好像不符合内部函数的归则
#include<stdio.h>//
static void fun(void);//内部函数又称为静态函数
void f(void);
static void fun(void)//定义内部函数的一般行式
{
    int a=3;
    printf("fun()函数里面的a值为:%d\n",a);
}
void f(void)
{
    fun();
    fun();
}
int main(void)
{
    fun();
    fun();
    fun();
    f();//为什么f()函数可以调用fun()函数
    return 0;
}
第二种
#include<stdio.h>
#include "file.h"
static void fun(void)
{
    int a=3;
    printf("fun()函数里面的a值为:%d\n",a);
}
int main(void)
{
    fun();
    fun();
    fun();
    f();
    return 0;
}
#include "file1.h"
void f(void)
{
    fun();
}
简单一句话怎样用关键字static封装一个函数
函数的默认扩展类型是extern,你倒是可以把函数前加static限制作用范围,即只能在本文件或者本模块里使用。

C语言里函数体内是不能定义函数的,貌似没有局部函数这一说。
“你倒是可以把函数前加static限制作用范围,即只能在本文件或者本模块里使用。”——这句话怎样理解
请各位给出点示例代码,谢谢
搜索更多相关主题的帖子: void fun include return 
2013-02-24 11:39
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
不太理解啊,还有更简单的解释吗T版
2013-02-24 11:53
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
a.c文件
#include<stdio.h>
int main(void)
{
    f();
    f1();
    return 0;
}
b.c文件
#include<stdio.h>
void f(void);
void f1(void);
void f(void)
{
    printf("hello");
}
void f1(void)
{
    printf("world");
}
int main(void)
{
    f();
    f1();
    return 0;
}
a.c文件不能调用b.c中的f()函数和f1()函数
2013-02-24 12:34
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
a.c文件
#include<stdio.h>
int main(void)
{
    f();
    f1();
    return 0;
}
b.c文件
#include<stdio.h>
void f(void);
void f1(void);
void f(void)
{
    printf("hello");
}
void f1(void)
{
    printf("world");
}
int main(void)
{
    f();
    f1();
    return 0;
}
a.c文件不能调用b.c中的f()函数和f1()函数
2013-02-24 12:34
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
但如果把a中注释掉的函数原型恢复,就可以调用了。
#include<stdio.h>
void f(void);
void f1(void);
int main(void)
{
    f();
    f1();
    return 0;
}
这样也不行啊

2013-02-24 12:49
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
给点代码参考参考啊大牛们
2013-02-24 12:56
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
#include<stdio.h>
#include<b.h>
int main(void)
{
    f();
    f1();
    return 0;
}
#include<b.h>的代码是:

void f(void);
void f1(void);
void f(void)
{
    printf("hello");
}
void f1(void)
{
    printf("world");
}
2013-02-24 13:10
jokerskill
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:392
专家分:554
注 册:2012-3-4
收藏
得分:0 
以下是引用Susake在2013-2-24 12:50:40的发言:

这个不难吧
你有更好理解的代码
2013-02-24 13:35
快速回复:怎样用static封装一个函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019167 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved