Я пытаюсь отправить структуру из main в .h-файл, чтобы туда можно было манипулировать. Вот код в моем .c:note: expected 'struct filler', но аргумент имеет тип 'struct Info'
#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: ошибка: несовместимый тип для аргумента 1 '' doyourjob
funcon.h: 23: Примечание: ожидаемый 'структура наполнителя', но аргумент типа 'STRUCT Info'
Я также попытался изменение наполнителя структуры в f uncon.h в Info, но затем я получаю ошибку определения области видимости.
Это очень плохой стиль для размещения определений функций в ваших заголовочных файлах. Почему вы хотите передать структуру типа «материал» для функции doyourjob (...), которая явно берет структуру типа наполнителя? Если бы они были указателями, вы могли бы просто бросить их, но вы передаете всю структуру. – cleblanc
Я бы не отказался от ввода информации о структуре типа, но из-за ошибки компиляции я предположил, что мне пришлось переименовать тип структуры в .h. Если это не так, как мне отправить структуру на мой .h с сохранением всей ее информации? Можно ли удалить структуру, созданную мной в .h, и сохранить подпись в качестве структуры Info, которая будет передана? – AlwaysLearning
Я бы переместил 'struct Info {...}' в .h-файл и переместил 'doyourjob (...)' в .c-файл и использовал его в качестве типа структуры Info. – cleblanc