C语言 如何在其他文件中访问静态变量而不使用.h中的extern ?



假设文件first.c中有一个静态变量static uint8 Data_updated_u8,在某个循环函数中,它的值正在更新。现在我想在第二个文件中获取Data_updated_u8的更新值。有没有办法得到静态变量在第二不使用外部变量?或者使用指针

?

现在我想在第二个dc文件中获取Data_updated_u8的更新值

这是一个设计问题。如果您在.c文件的文件作用域声明了一个局部static变量,那么该变量将被视为私有的。如果您的设计是合理的,其他文件不应该需要直接访问该变量。因此,在做其他事情之前,你应该退后一步,先考虑你的程序设计。

还是使用指针?

坏主意,这比使用全局变量更糟糕。不应该通过指针公开私有变量。也不应该使用全局变量。总的来说,您不应该通过创建像这样奇怪的依赖关系来设计几个文件之间的紧密耦合

如果你确实需要与其他文件共享这个变量,那么正确的方法是写一个setter/getter API函数,通过头文件提供。然后按值设置/获取数据。(您甚至可能不需要从外部设置它?)

另外,不要发明一些当地的车库标准uint8。使用国际C语言标准uint8_tfrom stint .h.

data.h

#include <stdint.h>
uint8_t get_data (void);
void set_data (uint8_t val);

data.c

#include "data.h"
static uint8_t data;
uint8_t get_data (void) { return data; }
void set_data (uint8_t val) { data = val; }

最新更新