代码之家  ›  专栏  ›  技术社区  ›  FooHAH

在C中编译具有自己头的文件

  •  4
  • FooHAH  · 技术社区  · 6 年前

    我目前正处于学习如何用C编程的初级阶段,在重新编写头文件时遇到了一些问题。例如

    我有一个名为 header.h ,

    其中 int comp (int, int) 在中声明 标题。h类

    定义于 header.c

    在这种情况下,如果我要编译一个测试。c使用comp函数,我必须

    gcc test.c header.c
    

    第一个问题:必须添加标题。每次gcc看起来都太不方便和多余了。这是必要的吗?如果没有,我有没有办法绕过它?如果是,为什么?或者,事实上,与它的用法相比,它不是多余的吗?我只是在抱怨吗?

    第二个问题:如果我使用multiple。标题中声明了函数的c文件。我的gcc必须离开

    gcc test.c header.c header2.c header3.c .....
    

    这似乎又太多余了。(自此,问题与第一个问题相同。)

    提前谢谢。第一次在SO中提问。请告诉我是否有任何方法可以提高问题的清晰度。

    4 回复  |  直到 6 年前
        1
  •  2
  •   Willian Lopes    6 年前

    我认为您正在寻找一种可以自动执行您正在编译的文件的make。

    使用make,您不需要每次都编写命令,如“gcc test”。c标题1。c标题2。c……'在终端中(如果您直接向终端键入命令,是的,您将需要一直这样做,这是非常冗余的,并且需要花费大量时间)。使用make,只需执行一次,然后只需运行make命令。

    有关makefile的更多信息,请访问 https://en.wikibooks.org/wiki/Make . 我希望它能帮助你。

        2
  •  1
  •   M.M    6 年前

    如果使用shell历史记录功能重新执行命令太费劲,可以制作一个shell宏或脚本来执行该命令。

    当项目开始变得复杂时,使用 构建系统 在其中,可以在生成系统中配置生成命令,然后在需要生成时调用生成系统。例如,编写一个Makefile,列出所有 .c 使用makefiles的正确语法的文件,然后键入 make 每次您想要构建时。

    您可以考虑使用 集成开发环境 这是一个(通常)GUI,包括构建系统和其他有用的功能,在这种情况下,只需点击一个键即可构建和运行。

        3
  •  0
  •   Cerulean Chelonii    6 年前

    通常需要将代码分散到多个文件中;这有助于简化代码管理。头文件提供了一种统一的方法,可以将库或源代码文件中定义的函数公开给其他源代码文件,而不包括这些函数的实际代码。这样,相同的头文件可以包含在多个源代码文件中,而无需为每个源代码文件编译相同的代码。然而,这意味着头文件中函数的源代码也必须提供给编译器。因此,您必须 header.c 每次编译时都会发送到编译器。

    这意味着您将编译 标题。c 每次构建项目时,都有点多余。解决此问题的一种方法是编译 标题。c 变成一个 对象文件 ,然后在生成时指定编译器:

    gcc -c header.c -o header.o
    gcc header.o test.c
    

    此外,软件开发人员通常喜欢将其程序功能分发给其他开发人员,但不提供actaul代码。为此,他们通常使用软件库(其中包含编译的源代码)以及头文件来访问这些代码。这可能比你想要的要多一点,所以我让你好好读一读。

    所有这些都不是用来减少编译器命令中的冗余,而是用来减少已编译程序中的冗余。为了使程序员的生活更容易构建他们的程序,经常使用makefiles和IDE。这些可能是你必须仔细阅读的内容,但这里发布的其他答案应该提供一个很好的起点。

        4
  •  0
  •   aokellermann    6 年前

    编写一个简单的Makefile对于编译C程序非常有用。这里有一个例子

    CC = gcc
    CFLAGS = -g -Wall
    OBJECTS = main.o cfile1.o cfile2.o cfile3.o
    run: $(OBJECTS)
        $(CC) $(CFLAGS) -o run $(OBJECTS)
    

    编写Makefile时不要担心头文件;只担心你的“.c”文件。这个示例Makefile假设您要编译main。c、 c文件1。c、 c文件2。c、 和cfile3。c、 将c文件添加到Makefile时,请确保使用“.o”而不是“.c”。

    Makefile应该与您的C文件位于同一目录中,并且必须以大写M命名为“Makefile”。只需键入“make”即可编译。然后使用“/run”运行程序。