2014-01-24 91 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 
相關問題