现在的位置: 首页 > 综合 > 正文

extern static

2019年03月25日 ⁄ 综合 ⁄ 共 603字 ⁄ 字号 评论关闭

问高人得到的:

app.c 有main(),Task1.c中有任务Task1()      另外还有Task1.h
我现在写成这样:
Task1.h中 声明   extern  void Task1(void* p_arg);     //如果写成extern  static  void Task1(void* p_arg); 会报错  为什么?
app.c 中 #include "Task1.h"
Task1.h  有 #define Pin_Led_up     GPIO_Pin_0   供Task1.c使用
Task1.c中 #include "Task1.h"

这种写法有没有错误?

正解:

extern作用:比如 写在app.c里,告诉连接器:app.c需要调用的Task1()在其他文件里面。

                       extern不会写在头文件 (也可以写在头文件 ,见 http://bbs.csdn.net/topics/390743987?page=1#post-397050144)

正确做法:A.c中写extern B();或者  A.c中include B.h ,B.h中写B()函数声明。

static:作用是说明只被这个c文件里的函数调用,所以static不会跨文件调用

              所以注明static的函数,不会把声明写在对应.h中(保护函数),而是把函数体写在c文件的开头位置。

另外,static的函数有可重入性(函数可以由多于一个任务并发使用,而不必担心数据错误)。

抱歉!评论已关闭.