【发布时间】:2014-11-09 13:47:48
【问题描述】:
我正在尝试链接两个文件。意思是,有文件“file1.c”和“file2.c”。
file1.c
#include"stdlib.h"
#include"stdio.h"
void function1(int a)
{
printf("hello I am file%d.c\n ", a);
}
void main()
{
function1(1);
}
file2.c
#include"stdlib.h"
#include"stdio.h"
#include"file.h"
void function2(int b)
{
printf("hello I am file%d.c\n", b);
}
int main()
{
function2(2);
function1(1);
}
然后我制作一个头文件file.h为
#ifndef hell
#define hell
void function1(int a);
#endif
当我将file2.c编译为“gcc file2.c file1.c -o file2 " 它给出了以下错误
/tmp/cc4tno9R.o: In function `main':
file1.c:(.text+0x24): multiple definition of `main'
/tmp/ccL4fEki.o:file2.c:(.text+0x24): first defined here
collect2: ld returned 1 exit status
如何写入头文件?头文件有错误吗? 还是file2.c出错?
那么外部呢?它用于相同的目的吗?
【问题讨论】:
-
你只能有1个主!否则程序不知道从哪里开始?!?
-
开始,将
#include"stdlib.h"等替换为#include <stdlib.h>。谷歌他们的使用。或者更好的是,读一本书。 -
正如很多人所说,在编译成汇编程序时,标签
main用于使可执行文件启动。在已编译的可执行文件中不能有多个main。如果你想要两个可执行文件(每个主文件一个),你可以使用我为此目的制作的 makefile。它存在其他类似的项目,但是对于这个,我可以向您展示如何配置它,请问我。 github.com/carrieje/maky
标签: c