我在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一起使用?
答案 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