如何在 .h 文件中组合汇编函数?

How to combine assembly functions in .h file?

可能是重复的,但我找不到问题的答案。

通常如果你想在一个主程序中导入来自不同 c 文件的多个函数 class,人们会制作一个 .h 文件并列出来自 .c 源的所有函数。

我的问题是,所有函数都写在.asm 文件中。我使用 extern void asmFunc(int i, char c); 在进一步的代码中使用该函数,但它们变得越来越多,我不想在我的 main.我怎样才能创建一个包含所有汇编函数的 library.h,这样我就可以在我的主要 class 的开头写 #include "library.h"

编辑: 我想我没有提供足够的具体信息:

看起来像这样: 我有一个包含三个文件夹的文件夹,这些文件夹具有类似库的独立结构:bwt(基本 window 工具包)、io 和 std(类似 strlen 的东西) 它们被编译成 bwt.o io.o 和 std.o.

现在我想为它们中的每一个制作一个 .h 文件,这样我就可以 #include "bwt.h" 在所有需要它们的内核 class 中。我如何让 gcc 意识到 bwt.h 中的所有函数都在 bwt.o 中定义?

您可以:

  1. 制作文件
  2. 将文件另存为 library.h(与 C 文件相同的文件夹)
  3. 将您的外部声明*放入文件
  4. 在你的 C 文件中添加 #include "library.h"

#include字面上的 复制粘贴。你可以把一些代码放到另一个文件中,然后你可以 #include 那个文件,编译器会假装你直接把代码写在主文件中。这就是它的工作原理。

* 顺便说一下,声明函数时不需要写 extern - 只需写变量。

既然你有一个 .o 文件,那么这些例程的源是汇编并不重要。只要您知道如何将它们作为 C 函数调用,那才是最重要的。

因此,将汇编函数的所有 extern 声明放在 library.h 中,然后 #include "library.h" 放在主文件中。然后你可以link他们。

gcc -c main.c
gcc -o program main.o asmfunctions.o