在C中的不同文件中使用char

在C中的不同文件中使用char,c,C,我有3.c文件main.c,fun1.c,fun2.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.c文件与一个.h文件链接的示例 一

我有3.c文件main.c,fun1.c,fun2.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.c文件与一个.h文件链接的示例

一,。头文件函数。h:

这需要包含头文件,并使用函数void打印消息

三,。最后是一个将所有文件链接在一起的主.c文件:

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

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

您还可以查看makefiles,这将使这一长编译行简化为Makefile

您是否按正确的顺序包含了这些文件?我在fun1.c中包含fun1.h文件。我必须将其包含在fun2.c中吗?@saurabh如果我们能够大致了解您如何将其包含在每个.c文件中,那就更容易了。是的,您应该将fun1.h包含在fun2.c中,并使用fun1.c中的符号将其包含在所有其他文件中。这就是.h文件的含义。要在模块文件中使用的任何符号函数、变量都必须通知编译器。这可以通过在声明中包含头或显式声明来实现。注意:编译器对另一个模块中的任何符号一无所知,除非你告诉它。编译命令应该是gcc-Wall-gmain.c functions.c-omain
#include "functions.h"

void func() {
    printf("hello");
}
#include <stdio.h>
#include <stdlib.h>
#include "functions.h"

int main(void) {
    func();
    return 0;
}
gcc -Wall -Wextra -g main.c functions.c -o main