2016-11-04 3 views
1

У меня есть файл .c, в одном из файлов я попытаюсь вызвать read_cfg (struct) для назначения данных в структуре, но я получаю ошибку «конфликтующих типов» в .h файлконфликтующие типы для read_cfg()

example.c

#include<stdio.h> 
#include"example.h" 

struct config /structure 
{ 
char data[10]; 
}; 

int main() 
{ 
int n=0; 
struct data d; 
read_cfg(&d); //function call 
} 

example.h

#ifndef EXAMPLE_H 
#define EXAMPLE_H 
extern void read_cfg(struct); //ERROR 

examplelib.c

struct config //structure 
{ 
    char data[10]; 
}; 


void read_cfg(struct config_data *cfg) //function implementation 
{ 
struct config_data tmp; 
strcpy(tmp.data,"helo"); 
cfg=&tmp; 
} 

Любая помощь будет полезна для меня

Благодаря

+0

Просмотрите код в своем вопросе: у вас есть 3 разных типа структуры: 'struct config',' struct data' и 'struct config_data'. Они должны быть одного типа? Пожалуйста, прочитайте на [mcve]. – user694733

ответ

1

экстерном ничтожной Read_Cfg (STRUCT); // ОШИБКА

Ошибка была связана с тем, что у вас неправильный тип аргумента. Вместо этого оно должно быть void read_cfg(struct config_data *).

Btw, вам не нужно extern ключевое слово для функций - по умолчанию функции имеют внешнюю связь (кроме статических функций).

0

Ваша декларация read_cfg() функции (в example.h) и ваше определение read_cfg()examplelib.c) не совпадают. Измените объявление в example.h на:

extern void read_cfg(struct config_data *cfg); 
Смежные вопросы