如何链接来自同时具有"主"的.cpp源文件的函数?

Dar*_*zer 2 c++ linker gcc program-entry-point multiple-definition-error

我想使用.cpp源文件中的一些函数,该文件在我的.cpp源文件中有一个main函数.(我正在用make和gcc构建.)

这是我的Makefile中的规则:

$(CXX) $(CXXFLAGS) $(INCLUDES) $(SRCS) $(LIBS) -o $@
Run Code Online (Sandbox Code Playgroud)

这是输出(改变一些名称以防止分心):

$ make foo
g++ -g -Wall -m32 -Ilinux/include foo.cpp bar.cpp -o foo
/tmp/ccJvCgT3.o: In function `main':
/home/dspitzer/stuff/bar.cpp:758: multiple definition of `main'
/tmp/ccUBab2r.o:/home/dspitzer/stuff/foo.cpp:68: first defined here
collect2: ld returned 1 exit status
make: *** [foo] Error 1
Run Code Online (Sandbox Code Playgroud)

我如何向gcc表明我想使用foo.cpp中的main?

更新:我应该补充一点,"bar.cpp"是"别人的"代码,并且有自己的主要原因.(听起来我应该与其他人合作让他将共享功能拆分成一个单独的文件.)

Pau*_*xon 5

你可以做的是将每个main()函数包装在一个#ifdef块中,然后使用命令行来定义将导致使用相关main的符号.

#ifdef USE_MAIN1
int main(void)
{

}
#endif
Run Code Online (Sandbox Code Playgroud)

然后确保gcc命令行添加了类似的内容

-DUSE_MAIN1
Run Code Online (Sandbox Code Playgroud)

或者只是重构您的代码!