头文件和多个c程序

头文件和多个c程序,c,C,我试图同时使用两个.c文件。我不知道该怎么做,我对每个文件都有一个简单的设置,但是当我试图编译时,我得到了一个未定义的引用来格式化错误。任何帮助都将不胜感激 格式化程序.h #ifndef _FORMATTER_H_ #define _FORMATTER_H_ #include <stdio.h> char **format_file(FILE *); char **format_lines(char **, int); void test(); #endif 我怀疑你的主

我试图同时使用两个.c文件。我不知道该怎么做,我对每个文件都有一个简单的设置,但是当我试图编译时,我得到了一个未定义的引用来格式化错误。任何帮助都将不胜感激

格式化程序.h

#ifndef _FORMATTER_H_
#define _FORMATTER_H_

#include <stdio.h>

char **format_file(FILE *);
char **format_lines(char **, int);
void test();


#endif

我怀疑你的主打电话是用来打电话的

你需要这样做

gcc formatter.c sendgfmt.c -o myprog

必须列出要一起编译的所有c文件

如果在多个源文件中有代码,则需要使用所有源文件进行编译

有两种方法可以做到这一点:

  • 使用一个命令编译并链接所有源文件:

    $ gcc sengfmt3.c someOtherSourceFile.c someThirdSourceFile.c
    
  • 首先生成所有源文件的对象文件,然后将对象文件链接在一起。这是更多的工作,但如果您有一个makefile或其他生成系统,它会更好,因为只会重新编译修改过的源文件,并且可能会为您节省一些生成时间:

    $ gcc -c sengfmt3.c
    $ gcc -c someOtherSourceFile.c
    $ gcc -c someThirdSourceFile.c
    $ gcc sengfmt.o someOtherSourceFile.o someThirdSorceFile.o
    
    注意编译的命令行选项
    -c
    ,它告诉GCC生成对象文件。还要注意,对于链接命令(最后一个命令),文件扩展名已从
    .c
    更改为
    .o

    第1点中的命令在内部执行此操作,使用完成后删除的临时文件


  • 向我们展示编译命令和错误如何编译?还要注意的是,后面跟一个大写字母的“u”是保留的。使用
    #define FORMATTER_H 
    。发布有关生成错误的问题时,请始终在问题中包含实际的(完整且未编辑的形式)。请编辑您的问题以包含它们。关于提问的另一个提示:不要编辑您的问题以添加评论。关于这个评论,您是如何得到您首先提到的构建错误的?只需重复这个过程就可以得到错误,并将其复制粘贴到您的问题中。如果我制作了一个makefile,这会实现相同的目标吗?@user3777576如果您只有几个小的源文件,您可以像我的第一点一样手动生成它们。如果您获得的源文件多于两个,那么拥有一个makefile可能会对您有所帮助。您在makefile中所做的应该是我在第2点中所做的,每个源文件分别编译为一个目标文件,然后在单独的步骤中链接在一起,形成最终的可执行程序。
    gcc formatter.c sendgfmt.c -o myprog
    
    $ gcc sengfmt3.c someOtherSourceFile.c someThirdSourceFile.c
    
    $ gcc -c sengfmt3.c
    $ gcc -c someOtherSourceFile.c
    $ gcc -c someThirdSourceFile.c
    $ gcc sengfmt.o someOtherSourceFile.o someThirdSorceFile.o