gpt4 book ai didi

c - 注意: expected ‘struct filler’ but argument is of type ‘struct Info’

转载 作者:行者123 更新时间:2023-11-30 15:11:05 24 4
gpt4 key购买 nike

我正在尝试将一个结构从 main 发送到 .h 文件以便在那里进行操作。这是我的 .c 中的代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "funcon.h"
enum sign{
positive,
negative
}sign;

enum type{
integer,
floating
}type;

struct Info{
enum sign leading;
enum type out;
char * exp;
char * fraction;
char * binary;
};


int main(int argc, char ** argv){
struct Info stuff;
stuff.exp = malloc(8);
stuff.fraction = malloc(23);
stuff.binary = malloc(31);
strncpy(stuff.exp, argv[1]+1,8);
strcpy(stuff.fraction,argv[1]+9);
strcpy(stuff.binary, argv[1] + 1);
printf("%s\n", stuff.exp);
printf("%s\n", stuff.fraction);
doyourjob(stuff);
return 0;
}

这是 .h 文件:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
enum signf{
positive1,
negative1
}signf;

enum typef{
integer2,
floating2
}typef;

struct filler{
enum signf leading2;
enum typef out2;
char * exp2;
char * fraction2;
char * binary2;
};

int doyourjob(struct filler solveme){

if(solveme.out2 == integer2){

if(solveme.leading2 == positive1){
int hold;
sscanf(solveme.binary2, "%d", &hold);

}else{

}

}else{//When solveme is a floating type

}
}

编译时出现错误:
function.c:在函数“main”中:
function.c:51: 错误:‘doyourjob’的参数 1 的类型不兼容
funcon.h:23:注意:预期为“结构填充符”,但参数的类型为“struct Info”
我还尝试将 funcon.h 中的结构填充符更改为 Info,但随后出现范围错误。

最佳答案

类型不兼容。它们必须是同一类型。将类型更改为 struct Info 是正确的,但您还需要将 struct Info 的声明移动到 int doyourjob(..) 可以看到的位置。例如。在 .h 文件中的 int doyourjob(..) 之前。

顺便说一句,您应该在头文件中声明但不实现函数。 IE。在你的 .h 添加:

struct Info {
// ...
}

int doyourjob(struct Info);

现在在 .c 文件(例如 doyourjob.c)中,您有:

#include "doyourjob.h"

int doyourjob(struct Info) {
// Your code here
}

最后您需要编译并链接这两个文件。

关于c - 注意: expected ‘struct filler’ but argument is of type ‘struct Info’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35806592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com