【发布时间】:2016-06-01 08:13:45
【问题描述】:
所以我有几个我正在从事的大学项目的文件;每个文件都有几个函数和一个main 函数用于测试目的。然而,一些文件需要使用其他文件的函数,这会导致链接器对多个 main 声明的投诉符合预期。我想知道是否有一种方法可以将这些文件编译为目标文件,而无需一路编译 main 函数,基本上是去掉 main 以只留下可用的函数。
一个例子(不是我的一个非常大的实际文件),对于每个我假设存在一个头文件,其中分别包含 foo 和 bar 的声明:
//File foo.c
#include <stdio.h>
#include <stdlib.h>
#include "foo.h"
int foo(int x, int y)
{
return x + y;
}
//Assumes the user gives 2 integer inputs
int main(int argc, char **argv)
{
int x, y;
sscanf(argv[1], "%d", &x);
sscanf(argv[2], "%d", &y);
printf("foo(%d, %d) = %d\n", x, y, foo(x,y));
}
//File bar.c
#include <stdio.h>
#include <stdlib.h>
#include "foo.h"
#include "bar.h"
int bar(int x, int y, int z);
{
return foo(x, y) * z;
}
//Assums the user gives 3 integer inputs
int main(int argc, char **argv)
{
int x, y, z;
sscanf(argv[1], "%d", &x);
sscanf(argv[2], "%d", &y);
sscanf(argv[3], "%d", &z);
printf("bar(%d, %d, %d) = %d\n", x, y, z, bar(x, y, z));
}
是否可以将foo.c 编译为目标文件,以便我可以调用gcc bar.c foo.o 并获得bar.c 的可执行文件?
【问题讨论】:
-
只编译,不链接...
-
您可以将
main放入#ifdef TEST之类的内容中。
标签: c compilation main