2016-09-13 67 views
0

我的代碼從調用3個函數,用3頭一個main.c中下面的示例代碼片段 - 這是給我警告,不明原因:警告:函數的隱式聲明 - 包含事物的順序?

#include "header1.h" 
 
#include "header2.h" 
 
#include "header3.h" 
 

 
int main() 
 
{ 
 
    function1(); // this is from header1 
 
    function2(); // this is from header2 
 
    function3(); // this is from header 3 
 
}

基本上,在使用gcc之後,函數2會產生警告。但是,代碼重新排列,以這樣的事情後:

#include "header3.h" 
 
#include "header1.h" 
 
#include "header2.h" 
 
    
 

 
int main() 
 
{ 
 
    function1(); // this is from header1 
 
    function2(); // this is from header2 
 
    function3(); // this is from header 3 
 
}

它將然後給我,其功能1 & 2是隱含的警告。我在這裏做錯了什麼?

+1

改變請提供一個[MCVE。我們需要看到頭文件的確切內容。你可能有一個/所有的錯誤(使用相同的包括守衛是我的猜測)。 – kaylum

+1

如果標題未正確包含從屬標題或使用不明確的宏/條件編譯,則會發生此類錯誤。看[問],提供[mcve]。這裏 – Olaf

+0

@kaylum是頭文件中的一個,其餘跟風 '的#ifndef __REZON_FUNCTIONS__ 的#define __REZON_FUNCTIONS__ 無效功能1(); #endif' – rezon

回答

1

您的包含文件1應該是這樣的:

#ifndef __REZON_FUNCTIONS1__ 
#define __REZON_FUNCTIONS1__ 

#endif 

其他兩個文件應該與宏名稱類似相應