【问题标题】:choosing which main() to use in the Makefile选择在 Makefile 中使用哪个 main()
【发布时间】:2010-03-23 09:52:06
【问题描述】:

在一个 C 项目中,我在几个文件中有一个 main() 函数。因此,当我编译时,出现错误“main 的多个声明”。是否可以在 Makefile 中选择应该使用哪一个 main() 函数来编译? (其他的会被忽略...)

【问题讨论】:

    标签: c makefile


    【解决方案1】:

    您可以使用预处理器隐藏它们:

    在file1.c中:

    #if defined FILE1_MAIN
    int main(void)
    {
      printf("Running main() in file1.c");
      return 0;
    }
    #endif
    

    这可以根据需要在任意数量的 C 文件中重复。

    然后在 Makefile 中有逻辑,将正确的 -D 选项传递给编译器,即 -DFILE1_MAIN 包含来自 file1 的 main(),-DFILE2_MAIN 以获取 file2.c,等等。

    这种技术在实现时也很有用,例如库模块,包括一个可选的main(),用于在单个 C 文件中进行测试。

    【讨论】:

      【解决方案2】:

      您可以简单地为每个main() 编写一个目标,在此您将忽略除一个包含main() 的文件之外的所有文件。

      【讨论】:

        【解决方案3】:

        您的源代码中只能有一个main() 函数。您必须重命名所有其他实例,或者从构建中排除包含main() 其他实例的源文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-28
          相关资源
          最近更新 更多