【问题标题】:Two main() in different source files under same project同一项目下不同源文件中的两个main()
【发布时间】:2014-02-19 22:00:02
【问题描述】:

大家好,我们可以在 eclipse 的同一个项目下的不同 C 源文件中使用两个或多个 main() 吗?我实际上尝试的是在每个项目中使用 main() 在同一个项目下编写服务器和客户端源文件。我收到一个错误main() redeclaration。有什么办法吗?如果是,请告诉我如何在 eclipse CDT Kepler 中成功运行它。问候,

【问题讨论】:

  • 确保两个 main 函数定义在不同的模块中,并且这些模块没有被构建系统链接在一起。
  • 你的操作系统和开发环境是什么?
  • 在带有命名空间的 c++ 中相对不容易完成,而在 c 中则要复杂得多
  • 如果您在构建系统中没有更好的方法,一种简单的方法:将mains 放在 ifdef 保护中:#ifdef MYMAIN1 ... #endif#ifdef MYMAIN2。 .. #endif 然后使用 -DMYMAIN1-DMYMAIN2 开关(这是 gcc 语法)构建例如
  • 非常抱歉,我是 Eclipse 新手。 Larsmans 先生,您能说得更清楚些吗?谢谢!

标签: c eclipse main


【解决方案1】:

您还可以模拟在同一个项目中拥有两个main 函数,方法是让main 调用mainClientmainServer(您的两个主要函数已重命名),具体取决于条件你的选择。

【讨论】:

    【解决方案2】:

    是的,您只需在链接两个程序时选择性地包含每个程序。

    构建系统(Makefile、IDE...)会有所帮助。

    示例

    如果你有这些源文件:

    仅限客户:

    • main-client.c
    • source1-client.c

    仅服务器:

    • main-server.c
    • source1-server.c

    常见来源:

    • source1-common.c
    • source2-common.c
    • source3-common.c

    那么一个简单的(愚蠢的)Makefile是:

    all: client server
    
    client:
        gcc -o client main-client.c source1-client.c source1-common.c source2-common.c source3-common.c
    
    server:
        gcc -o server main-server.c source1-server.c source1-common.c source2-common.c source3-common.c
    

    【讨论】:

    • 我有一个 server.c 和一个 client.c 但没有 common.c。请放过我!
    • 您可以放心地忽略它们 ;) 其他人可能会发现它们有帮助!
    【解决方案3】:

    大家好,我们实际上可以按照 Simon 和 Brandin 的建议来做到这一点。如果有人仍有疑问,请参阅此示例。谢谢! #define my main() my(){ printf("hello frnz"); } 所以我们可以有尽可能多的主电源。沃拉

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      相关资源
      最近更新 更多