我对C语言中的静态变量有一个问题。例如,有两个文件,一个是“ Action.c”,另一个是“ Result.c”
[In Action.c文件]`
static uint8_t actionResult[10] = {0x00};
void getActionResult (uint8_t** resultPtr)
{
*resultPtr = actionResult;
}
[在Result.c]
void main (void)
{
uint8_t* getResultPtr = NULL;
getActionResult(&getResultPtr);
}
我想知道这是否是从“ Action.c”文件获取价值的合法方法。而且还想知道将静态变量地址转移到其他文件是不是个好主意?
非常感谢。
合法吗?是。无法从翻译单元外部看到文件级静态变量,但是,如果该翻译单元以某种方式(如您所愿)发布了地址,则可以通过取消引用该地址来访问或更改它。
这是个好主意吗?并不是的。文件级静态变量的整个point是为了保护它们免受翻译单元外部的干扰。如果您要允许这样做,那么根本就没有必要将其标记为静态。
只需将其定义为uint8_t actionResult[10] = {0x00};
,并让main
使用变量名而不是获取并取消引用其地址。