2017-02-17 37 views
0

使用char我有3個.c文件main.c中,fun1.c,fun2.c在不同的文件用C

char buff[50];//in fun1.c 

char *arg; //in fun2.c 

arg = strstr(buff, "001"); //in fun2.c 

我想打印在fun2.c buff,但它給出了一個錯誤buff未經宣佈,儘管我在fun1.h中聲明它爲extern char buff[]; fun1.c和fun2.c中都有函數每個都有

+2

你有沒有按照正確的順序包含這些文件? –

+0

我在fun1.c中包含fun1.h文件。我必須將它包含在fun2.c中嗎? – saurabh

+0

@saurabh如果我們能夠粗略地看到你在每個'.c'文件中包含'#include',將會更容易。 – RoadRunner

回答

1

很難說你的程序有什麼問題,但這裏是一個鏈接2 .c文件與一個.h文件。

頭文件functions.h

#include <stdio.h> 

extern void func(); 

當我用extern提供其它文件的定義。

2.現在,functions.c文件使用這種頭文件:

#include "functions.h" 

void func() { 
    printf("hello"); 
} 

這需要#include頭文件,並使用該函數void()打印的消息。

最後,main.c文件,該文件鏈接一起:

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

int main(void) { 
    func(); 
    return 0; 
} 

這也需要function.h因爲它使用func()。然後,您可以編譯代碼:

gcc -Wall -Wextra -g main.c functions.c -o main 

你也可以看看makefile文件,這將減少這一長期編譯行簡單make

+1

編譯命令應該是'gcc -Wall -g main.c functions.c -o main' –

相關問題