qazplm3218 发表于 2020-5-7 17:20:20

如何引用结构体

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

record error;


如何在b.c里使用这个结构体里的变量??

mylovemcu 发表于 2020-5-8 08:00:57

qazplm3218 发表于 2020-5-7 18:14
在a.c文件里定义了
typedef struct my_record
{


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

你若安好_清风徐来 发表于 2020-5-7 18:29:52

结构体定义在.h里面然后两个C全部调用.h就可以了 ,.C里面定义只能在本文件使用不可以在其他文件使用哪怕你使用extern关键字都不可以,只有你的.h里面定义结构体类型然后在.c里面声明结构体变量,在另一个。c里面使用extern关键字就可以

Cortexxx 发表于 2020-5-7 17:42:01

a.c
my_record error;
a.h
extern my_record error;
b.c
include a.h

andeyqi 发表于 2020-5-7 17:55:47

对外声明下这个变量,之后再b.c里面包含对应的变量的声明,就能用了

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;

在b.c文件里定义了
externrecord error;
编译错误

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

声明,除了声明变量名以外,也要声明数据类型!!!

qazplm3218 发表于 2020-5-7 22:48:49

非常感谢各位的热心帮助,明天我试试

likang1202 发表于 2020-5-8 08:48:58

感觉定义结构体的时候最好定义在头文件里面
页: [1] 2
查看完整版本: 如何引用结构体