情况就是这样.在文件"fileA.c"中我有
typedef struct MY_STRUCT
{
int A;
int B;
int C;
}MY_STRUCT;
MY_STRUCT Data;
/* Function */
int function(MY_STRUCT *params)
{
int varA, varB, varC;
varA = params->A;
varB = params->B;
varC = params->C;
}
Run Code Online (Sandbox Code Playgroud)
我需要从其他例程中填充struct元素,例如"fileB.c",其中包含以下内容:
extern MY_STRUCT Data;
int function(MY_STRUCT *params);
/* Function */
void userMain(void)
{
Data.A = 1254;
Data.B = 5426;
Data.C = 1236;
function(&Data);
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了错误:
"[错误] fileB.c E208:语法错误 - 在"数据"之前插入标记";"
当我交叉探测错误时,编译器将我带到声明"extern MY_STRUCT Data;"
所以我的问题是如何实现这一功能?我的意思是,如何在另一个文件中填充结构元素,这个文件不同于我声明结构的文件?
当编译器正在编译fileB.c时,它不知道typedef你在fileA.c中定义的那个.所以在fileB.c中,MY_STRUCT是一个未知类型.
您应该移动typedef到公共标头,并将其包含在fileA.c和fileB.c中.
| 归档时间: |
|
| 查看次数: |
1587 次 |
| 最近记录: |