警告:函数'foo'的隐式声明在C99中无效

时间:2014-01-24 21:36:11

标签: c

我在C编程中遇到了另一个问题。我按照“C语言编程”一书中的一个例子编写了以下两个源文件:

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'的隐式声明无效   在C99中[-Wimplicit-function-declaration] foo(); ^ 1警告   生成。

我通过将foo.c重命名为foo.h并将其作为标题包含在main.c中找到了解决方法。这是一种使其有效的好方法吗?如何使它与foo.c一起使用?

2 个答案:

答案 0 :(得分:7)

你需要一个带有函数foo声明的标题。保留foo.c,并使用声明

创建foo.h.
void foo(void);

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

#include "foo.h"

答案 1 :(得分:2)

您需要在标头中定义foo的签名并将其包含在main.c

foo.h中:

void foo(void);

在main.c中:

#include <stdio.h>
#include <stdlib.h>
#include "foo.h"
// Rest of code