我试图发送一个结构从主要.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:在函数 '主':
function.c:51:error:'doyourjob'参数1的不兼容类型
funcon.h:23:note:expected'struct filler'但参数的类型是'struct Info'
我也试过在f中更改结构体填充不会将信息放入Info中,但是会出现范围错误。
将函数定义放在头文件中的风格非常糟糕。你为什么要传递一个类型信息“stuff”的结构给doyourjob(...)函数,这个函数显然需要一个类型填充的结构体?如果他们是指针,你可以将它们施放,但是你传递整个结构。 – cleblanc
我不介意在struct类型的信息,但由于范围编译错误,我认为我不得不重新命名.h中的结构类型。如果情况并非如此,那么如何将结构发送给我的.h并保存所有信息?是否有可能删除我在.h中创建的结构,并将签名保存为要传递的结构信息? – AlwaysLearning
我会将'struct Info {...}'移动到.h文件,并将'doyourjob(...)'移动到.c文件并使其使用Info结构类型。 – cleblanc