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

如何引用结构体

[复制链接]
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

查看全部评分

andeyqi 回答时间:2020-5-7 17:55:47
对外声明下这个变量,之后再b.c里面包含对应的变量的声明,就能用了

评分

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

查看全部评分

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
非常感谢各位的热心帮助,明天我试试
likang1202 回答时间:2020-5-8 08:48:58
感觉定义结构体的时候最好定义在头文件里面

评分

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

查看全部评分

12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版