首页 > 解决方案 > 如何在不使用 .h 中的 extern 的情况下访问其他文件中的静态变量?

问题描述

假设static uint8 Data_updated_u8文件 first.c 中有静态变量,并且在某些循环函数中,它的值正在更新。Data_updated_u8现在我想要获取second.c 文件中的更新值。有没有办法在不使用外部变量的情况下在 second.c 中获取静态变量?还是使用指针

标签: cpointersembedded

解决方案


现在我想在 second.c 文件中获取 Data_updated_u8 的更新值

这是一个设计问题。如果您static在 .c 文件的文件范围内声明了一个局部变量,那么该变量将被视为私有变量。如果您的设计合理,则其他文件不需要直接访问该变量。因此,这是您应该退后一步并首先考虑您的程序设计的地方。

还是使用指针?

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

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

此外,不要发明一些当地的车库标准uint8uint8_t使用来自 stdint.h的国际 C 语言标准。

数据.h

#include <stdint.h>

uint8_t get_data (void);

void set_data (uint8_t val);

数据.c

#include "data.h"

static uint8_t data;

uint8_t get_data (void) { return data; }

void set_data (uint8_t val) { data = val; }

推荐阅读