静态函数函数调用

2019-07-20 22:43发布

首先  在led.h中定义
typedef struct
{
  void (*plf_test_led) (void);
}
LED_TypeDef;

然后在led.c中定义
LED_TypeDef LED_VOP=
{
    test_led
};
然后在led.c中写了一个函数
static void test_led(void)
这是一个静态的函数

然后在main.c中写
LED_VOP.plf_test_led();

然后就调用了上面的那个静态函数,没有问题。
但是完全不明白为什么要这样写函数……

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
ianhom
1楼-- · 2019-07-21 03:15
我的理解是,用static修饰的函数仅本文件可见,即其他函数调用test_led()也不会调用到你static修饰的这个函数。
那这个函数如何给外部使用呢,只能靠指针传递了。这个和static修饰的全局变量用法一样:无法通过变量名找到该变量,但可以通过指针访问。其他文件还可以命名相同的变量名且不会冲突。
xinxian
2楼-- · 2019-07-21 08:32
 精彩回答 2  元偷偷看……
xinxian
3楼-- · 2019-07-21 10:14
ianhom 发表于 2016-4-20 15:21
我的理解是,用static修饰的函数仅本文件可见,即其他函数调用test_led()也不会调用到你static修饰的这个函 ...

我觉得你的解释有点牵强,若一个人写了一个test_led,这个函数是extern的,另外的一个人也写一个函数,名字重复了,编译器直接报错,这样来的更实在,更何况函数的命名是规则的,一般不会重复。我想一定不是因为还怕重名而这样进行程序设计,一定有别的意义。
ianhom
4楼-- · 2019-07-21 11:06
 精彩回答 2  元偷偷看……
xinxian
5楼-- · 2019-07-21 13:06
xuande
6楼-- · 2019-07-21 15:34
xinxian 发表于 2016-4-20 17:30
@xuande


抱歉,辜负你信任了。

我c语言都是自学,用到什么学什么,
好在平时只用到 if-else,switch,基本一切搞定。

再次抱歉!

一周热门 更多>