c - 如何在不使用 .h 中的 extern 的情况下访问其他文件中的静态变量?
问题描述
假设static uint8 Data_updated_u8
文件 first.c 中有静态变量,并且在某些循环函数中,它的值正在更新。Data_updated_u8
现在我想要获取second.c 文件中的更新值。有没有办法在不使用外部变量的情况下在 second.c 中获取静态变量?还是使用指针?
解决方案
现在我想在 second.c 文件中获取 Data_updated_u8 的更新值
这是一个设计问题。如果您static
在 .c 文件的文件范围内声明了一个局部变量,那么该变量将被视为私有变量。如果您的设计合理,则其他文件不需要直接访问该变量。因此,这是您应该退后一步并首先考虑您的程序设计的地方。
还是使用指针?
坏主意,这比使用全局变量还要糟糕。您不应该通过指针公开私有变量。你也不应该使用全局变量。总的来说,您不应该通过创建像这样的奇怪依赖项来设计多个文件之间的紧密耦合。
如果您确实需要与其他文件共享此变量,那么正确的方法是编写您通过头文件提供的 setter/getter API 函数。然后按值设置/获取数据。(您甚至可能不需要从外部设置它?)
此外,不要发明一些当地的车库标准uint8
。uint8_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; }
推荐阅读
- c# - 线程数据可视化和计时器
- reactjs - mapStateToProps 在 componentDidMount 内调度之前触发,导致数据未定义
- android - 当我尝试将数据写入块时出现 TagLostException
- reactjs - 为什么我不能使用 npx create-react-app 命令?
- python - 读取数据框时获取浮点值
- javascript - 切片方法在这里的作用是什么?为什么需要它?
- google-apps-script - Google HTML 脚本未能调用服务器端函数:“从存储读取时发生服务器错误。错误代码 PERMISSION_DENIED。”
- ada - Ada:重新导出枚举类型值
- python - 有没有办法用 TensorFlow 卸载内存?
- r - 无法在 R DBI 中获得完整的结果集