在带有Eclipse的C中有两个或多个main()方法

在带有Eclipse的C中有两个或多个main()方法,c,eclipse,C,Eclipse,我正在用C开发一个小型的客户机/服务器应用程序。当时我正在手动调用gcc,并使用我自己的make文件。我有两个main()函数,一个在server.c中,另一个在client.c中 我将项目文件夹中的所有文件导入Eclipse,但在尝试编译时,它警告我main有多个定义。我知道一个给定的可执行文件应该有一个main()函数,但在本例中我希望有2个,这样我就可以运行服务器和客户端,因为它们几乎共享所有其他.c文件 如何解决这个问题?我想到的唯一一个想法是将其分为2个(可能是3个?)项目?我希望同时

我正在用C开发一个小型的客户机/服务器应用程序。当时我正在手动调用gcc,并使用我自己的make文件。我有两个
main()
函数,一个在
server.c
中,另一个在
client.c

我将项目文件夹中的所有文件导入Eclipse,但在尝试编译时,它警告我main有多个定义。我知道一个给定的可执行文件应该有一个
main()
函数,但在本例中我希望有2个,这样我就可以运行服务器和客户端,因为它们几乎共享所有其他
.c
文件

如何解决这个问题?我想到的唯一一个想法是将其分为2个(可能是3个?)项目?我希望同时运行服务器和客户机,并且我希望(如果可能的话)通过Eclipse本身这样做

谢谢

编辑:

生成文件:

table-client: client-lib.o
    gcc -o tabela-client table_client.c table.c base64.c list.c client-lib.o

table-server:
    gcc -o tabela-server table_server.c message.c base64.c entry.c data.c table_skel.c table.c list.c

client-lib.o:
    gcc -c remote_table.c network_client.c message.c data.c entry.c
    ld -r data.o entry.o message.o network_client.o remote_table.o -o client-lib.o

clean:
    rm -f tabela-server
    rm -f tabela-client
    rm -f *.o

您可以进行设置,以便在生成中包含/排除特定文件。通过设置客户端构建和服务器构建,您可以拥有多个主电源,只要它们保存在单独的文件和构建中


编辑:不管怎样,从可维护性的角度来看,答案更好。

是的,您最好拆分项目。可能最好是创建三个不同的项目:服务器、客户端、共享库以实现公共功能。

将其分为三个项目(服务器、客户端和库中的公共代码)是一个好主意。设置服务器和客户端项目,使它们依赖于公共代码库。公共代码库可以做成静态库。

嘿,伙计们,我们实际上可以这样做。我也遇到了同样的问题,并能以如下方式解决:谢谢

#define my main() 
my() 

{ 

printf("hello frnz"); 

}

因此,我们可以拥有我们想要的任何数量的电源。沃拉

您的
Makefile
是什么样子的?可能与