C 静态变量';s地址是否可以被其他文件访问
我有一个关于C语言中静态变量的问题。 例如,有两个文件,一个是“Action.c”,另一个是“Result.c” [在Action.c文件中] ` [在Result.c中]C 静态变量';s地址是否可以被其他文件访问,c,pointers,static,C,Pointers,Static,我有一个关于C语言中静态变量的问题。 例如,有两个文件,一个是“Action.c”,另一个是“Result.c” [在Action.c文件中] ` [在Result.c中] void main (void) { uint8_t* getResultPtr = NULL; getActionResult(&getResultPtr); } 我想知道这是否是从“Action.c”文件中获取值的合法方法。并且还想知道将静态变量地址传输到其他文件是不是坏主意 非常感谢。这合法吗
void main (void)
{
uint8_t* getResultPtr = NULL;
getActionResult(&getResultPtr);
}
我想知道这是否是从“Action.c”文件中获取值的合法方法。并且还想知道将静态变量地址传输到其他文件是不是坏主意
非常感谢。这合法吗?对从翻译单元外部看不到文件级静态变量,但如果翻译单元以某种方式发布了地址(如您所做的),则可以通过取消引用该地址来访问或更改该地址 这是个好主意吗?不是真的。文件级静态的全部目的是保护它们不受翻译单元之外的事物的影响。如果你允许这样做,那么把它标记为静态是毫无意义的
只需将其定义为
uint8\u t actionResult[10]={0x00}
和havemain
使用变量名,而不是获取和取消引用其地址。是的,这是合法的。静态变量仅在定义它的编译单元(也称为源文件)中可见。但是如果一个函数提供了它的地址,那就可以了,因为静态变量一直存在到程序终止。这样的事情不一定是个好主意,但它是一种选择,尽管有其他选择。顺便说一下,main()
在标准C中返回int
,而不是void
。
void main (void)
{
uint8_t* getResultPtr = NULL;
getActionResult(&getResultPtr);
}