gpt4 book ai didi

c - 具有主要功能的多个源文件

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:20 25 4
gpt4 key购买 nike

出于学习的目的,我想要一个包含多个源文件的项目,每个源文件都有自己的 main 函数。怎么可能做到这一点?我想要做的是将我所有的 C 文件放在同一个项目中,并有选择地编译我当前正在处理的文件。或者更好的是,将文件名作为参数提供给程序,以便程序执行:

例如在我的 main.c 中,我想要(其中 sample*_main 函数在不同的文件中):

int main(int argc, char ** argv) {
if (argc > 0) {
if (strstr(argv[0], "sample1")) return sample1_main(argc, argv);
else if (strstr(argv[0], "sample2")) return sample2_main(argc, argv);
// etc...
}
printf("Not sure what I should run.\n");
return -1;
}

然后像这样执行程序:main.exe sample1

我遇到的问题是在编译此类项目时出现“多重定义”错误,其中一些函数在 sample*.c 文件之间共享名称。

最佳答案

您似乎走在正确的道路上。

要实现您的目标,您可以采用以下方式:

  1. 将示例代码中的几个 main() 重命名为 sample1_main()sample2_main() ...(这避免了多重定义 错误 btw)
  2. 保留帖子中的main()
  3. 以这样的方式修改您的 makefile,根据您要运行的示例,构建的可执行文件称为 sample1sample2、...(对于 gcc选项 -o 指定可执行文件的名称)
  4. 通过名称调用可执行文件,即 sample1sample2 或...。无需传递 ayn 参数。

就是这样! :-)

此行为的原因是 argv[0] 是可执行文件本身的名称。

关于c - 具有主要功能的多个源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com