最近我遇到了用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是否合适由您决定。

10-08 14:15