2014-01-24 72 views
0

我在C编程中遇到了另一个问题。我跟着书 “在C程序设计” 的例子,写了下面的两个源文件:警告:函数'foo'的隐式声明在C99中无效

的main.c:

#include <stdio.h> 
#include <stdlib.h> 

int i = 5; 

int main(void) 
{ 
    printf("%i ", i); 

    foo(); 

    printf("%i\n", i); 

    return 0; 
} 

foo.c的:

extern int i; 

void foo(void) 
{ 
    i = 100; 
} 

编译'gcc main.c foo.c'时出现问题:

main.c:9:3:警告:函数'foo'的隐式声明无效 in C99 [-Wimplicit-function-declaration] foo();生成^ 1警告 。

我找到了一个解决方法,将foo.c重命名为foo.h并将其作为头文件包含在main.c中。这是使它工作的好方法吗?如何使它与foo.c一起使用?

回答

6

你需要一个包含函数foo声明的头文件。按原样保留foo.c并使用声明创建foo.h

void foo(void); 

然后在main.c和foo.c中包含foo.h。

+0

并将其包含在'foo.c'中。别忘了用'#ifndef'警卫包裹'foo.h'的内容。 –

2

你需要一个头文件来定义的foo签名,并将其包含在main.c中

了foo.h:

void foo(void); 

main.c中:

#include <stdio.h> 
#include <stdlib.h> 
#include "foo.h" 
// Rest of code 
相关问题