【发布时间】:2015-01-13 23:34:13
【问题描述】:
我为一个类写了一个函数,我需要提交它以便在编译时工作。
main.c 头文件看起来像...
#include <stdio.h>
#include <stdlib.h>
我的函数代码 fun.c 是这样的……
#include <stdio.h>
#include <stdlib.h>
#include "main.c"
但由于某种原因,它们没有链接在一起。当我编译和运行时,我没有收到错误,它只是运行 main.c,就好像 fun.c 不存在一样,这意味着它忽略了对 fun.c 的函数调用并运行程序而不执行我需要显示的内容.
我在 main.c 中一起编写了代码,所以我知道该函数有效。我只是在将其拆分为两个单独的 .c 文件并链接它们时遇到了一点麻烦。
感谢您的帮助
//编辑和更新
用gcc -m32 -O1 *.c编译目录下的两个文件分别是fun.c和main.c
基本上,我们提交的函数必须与提供的 main.c 一起使用,但我们并没有大声修改 main.c,所以我不知道如何将它添加到我的函数中,所以它们都编译/链接在一起
【问题讨论】:
-
您(通常)不要在其他
.c文件中包含.c文件。另外,请将您的 makefile 或编译器/链接器命令行参数发布到您的问题中。 -
尝试
gcc -Wall -m32 -O1 main.c fun.c -o exename,其中exename是您选择调用可执行文件的任何名称。 -
哦,正如戴所说,从 fun.c 中删除
#include "main.c" -
"当我编译和运行时我没有收到错误,它只是运行 main.c,好像 fun.c 不存在" - 如果程序正在运行,则没有链接错误.您的程序引用的 func.c 文件中的符号(全局函数和变量)已成功解析为内存地址,这意味着您确实将它们作为可执行映像的一部分。
-
在
main.c中调用function中的fun.c的函数是什么样的?我们可以整夜猜测,但除非您发布您的代码,否则我们无处可去,只能进一步进入猜测领域。