2016-11-04 112 views
1

我有2個.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

的extern空隙read_cfg(結構); //錯誤

錯誤是因爲您的參數類型不匹配。應該是void read_cfg(struct config_data *)

順便說一句,你不需要extern關鍵字的功能 - 默認情況下,功能有外部鏈接(除了靜態功能)。

0

您的read_cfg()功能(在example.h)和你的read_cfg()定義(在examplelib.c)聲明不匹配有用。 在example.h更改聲明:

extern void read_cfg(struct config_data *cfg);