2016-09-13 64 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 

其他两个文件应该与宏名称类似相应