【发布时间】:2023-03-19 18:22:01
【问题描述】:
我有一个关于 C 语言中的静态变量的问题。 比如有两个文件,一个是“Action.c”,另一个是“Result.c”
[在 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”文件中获取价值的合法方法。并且还想知道将静态变量地址转移到其他文件是不是坏主意?
非常感谢。
【问题讨论】:
-
是的,这是合法的。静态变量仅在定义它的编译单元(又名源文件)中可见。但是如果一个函数提供了它的地址,那很好,因为静态变量一直存在到程序终止。这样的事情不一定是一个好主意,但它是一种选择,尽管有其他选择。顺便说一句,
main()在标准 C 中返回int,而不是void。