所以我有幾個文件爲我正在進行的大學項目;每個文件都有幾個功能和一個用於測試目的的功能。但是有些文件需要使用其他文件的功能,這些功能會導致連接器對多個main
聲明的投訴。我想知道是否有辦法將這些文件編譯爲目標文件,而無需沿途編譯main
函數,基本上只剝離main
以僅留下可用的函數。編譯C代碼沒有它的主要功能
一個例子(我這是相當大的實際文件不是一個),每個我假設其中分別包含的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'之類的東西里面。 – interjay