你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何引用结构体

[复制链接]
qazplm3218 提问时间:2020-5-7 17:20 /
在a.c文件里定义了
typedef struct my_record
{
        uint8_t loop_number;
        uint8_t loop_status;
       
}record;

record error[10];


如何在b.c里使用这个结构体里的变量??
收藏 评论10 发布时间:2020-5-7 17:20

举报

10个回答
mylovemcu 回答时间:2020-5-8 08:00:57
qazplm3218 发表于 2020-5-7 18:14
在a.c文件里定义了
typedef struct my_record
{

外部变量不能加【10】
这样就行
extern  record error;

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

你若安好_清风徐来 回答时间:2020-5-7 18:29:52
结构体定义在.h里面然后两个C全部调用.h就可以了 ,.C里面定义只能在本文件使用不可以在其他文件使用哪怕你使用extern  关键字都不可以,只有你的.h里面定义结构体类型然后在.c里面声明结构体变量,在另一个。c里面使用extern  关键字就可以

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

Cortexxx 回答时间:2020-5-7 17:42:01
a.c
my_record error[10];
a.h
extern my_record error[10];
b.c
include a.h

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

andey 回答时间:2020-5-7 17:55:47
提示: 作者被禁止或删除 内容自动屏蔽
qazplm3218 回答时间:2020-5-7 18:14:08
andeyqi 发表于 2020-5-7 17:55
对外声明下这个变量,之后再b.c里面包含对应的变量的声明,就能用了

在a.c文件里定义了
typedef struct my_record
{
        uint8_t loop_number;
        uint8_t loop_status;
      
}record;

record error[10];

在b.c文件里定义了
extern  record error[10];
编译错误
MrJiu 回答时间:2020-5-7 18:26:20
qazplm3218 发表于 2020-5-7 18:14
在a.c文件里定义了
typedef struct my_record
{

大哥,要在.h里面定义结构体啊!!!否则,你在b.c文件里面,会提示,没有定义此数据类型!!!
MrJiu 回答时间:2020-5-7 18:26:57
声明,除了声明变量名以外,也要声明数据类型!!!

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

qazplm3218 回答时间:2020-5-7 22:48:49
非常感谢各位的热心帮助,明天我试试
李康1202 回答时间:2020-5-8 08:48:58
感觉定义结构体的时候最好定义在头文件里面

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

lebment 回答时间:2020-5-9 15:31:18
结构体定义在a.h,然后b.c包含a.h,就可以直接使用结构体

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版