结构体声明后跨文件使用

在a.h中声明

typedef struct a
{
    int a;
}A;

extern A m_a;

void test_a(A *m);

在b.h中

#include "a.h"

typedef struct b
{
    int b;
    A *m_addr;
}B;

void test_b( A m_b_a;)

 

在b.c 和 b.h 中均不能使用A中的结构体定义新变量,只能使用a.h中已经声明的结构体变量m_a。

如何在b.h中也使用结构体A声明新的变量呢?

我复制的代码显示你的结构体A,编译器报错显示非法字符(复制来的大括号是中文字符,而不是英文半角)。但从你的描述来看,可能不是原代码有这个问题,而是排版后产生了错误字符。修正该错误后我这里没有任何报错,你能把编译日志发上来吗?

(99.999%以上的情况下,编译日志报告的错误远比源代码本身更能说明构建错误问题。)