问高人得到的:
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的函数有可重入性(函数可以由多于一个任务并发使用,而不必担心数据错误)。