最近我遇到了用C语言从另一个文件返回结构的问题。
这是main.c的代码:
#include <stdio.h>
#include <stdlib.h>
#include "hash_types.h"
int main()
{
hashinfo info;
info = numerator();
printf("%d\n", info.ppower);
return 0;
}
分子c:
#include <stdlib.h>
#include <stdio.h>
#include "hash_types.h"
hashinfo numerator()
{
hashinfo info;
info.ppower = 15;
return info;
}
头文件如下所示:
typedef struct hashinfo{
unsigned long a_str;
unsigned long a_int;
unsigned long b_int;
unsigned long p;
unsigned long m;
char w;
char ppower;
}hashinfo;
当我试图编译代码时,gcc无法编译
main
报告main.c: In function ‘main’:
main.c:10:7: error: incompatible types when assigning to type ‘hashinfo’ from type 'int'
info = numerator();
^
如果我把所有这些放在一个文件中并编译,它就会工作得很好。我做错什么了?提前谢谢。
最佳答案
你必须在任何你想使用它的地方声明你的numerator
函数。这就是最小声明的样子
hashinfo numerator();
但更好的办法是用原型来声明
hashinfo numerator(void);
在定义中做同样的事情。
一种典型的方法是将声明放入头文件,并将其包含在使用此函数的所有位置。您的
hash_types.h
是否合适由您决定。