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