近段时间,在做一个项目时,发现函数名前都加上static,才想到如果不加static有什么作用呢?它们之间的区别是什么,查找了一个资料,对它们的区别列举如下:
1:加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见
2:当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过该函数名来调用该函数,这也是对1的解析与说明
//任务堆栈大小
static OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE];
static OS_STK App_TaskRxStk[APP_TASK_RX_STK_SIZE];
static OS_STK App_TaskTxStk[APP_TASK_TX_STK_SIZE];
static OS_STK App_TaskUserStk[APP_TASK_USER_STK_SIZE];