鱼C论坛

 找回密码
 立即注册
查看: 2286|回复: 2

[已解决]clion里面怎么在一个项目里创建两个.c文件,满足他们两个文件运行不同的代码

[复制链接]
发表于 2023-10-9 12:21:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
两个c文件,一个是插入排序,一个是二分查找,但是报错说我main函数用了两次
最佳答案
2023-10-9 12:22:28
在一个项目中创建两个.c文件,满足它们可以运行不同的代码,需要在一个文件中定义main函数,另一个文件中定义其他函数,然后在main函数中调用其他函数。

例如,在一个名为sort.c的文件中编写插入排序的代码:

  1. void insertionSort(int arr[], int n)
  2. {
  3.     int i, key, j;
  4.     for (i = 1; i < n; i++)
  5.     {
  6.         key = arr[ i];
  7.         j = i - 1;

  8.         while (j >= 0 && arr[j] > key)
  9.         {
  10.             arr[j + 1] = arr[j];
  11.             j = j - 1;
  12.         }
  13.         arr[j + 1] = key;
  14.     }
  15. }
复制代码


在另一个名为search.c的文件中编写二分查找的代码:

  1. int binarySearch(int arr[], int l, int r, int x)
  2. {
  3.     if (r >= l)
  4.     {
  5.         int mid = l + (r - l) / 2;

  6.         if (arr[mid] == x)
  7.             return mid;

  8.         if (arr[mid] > x)
  9.             return binarySearch(arr, l, mid - 1, x);

  10.         return binarySearch(arr, mid + 1, r, x);
  11.     }

  12.     return -1;
  13. }
复制代码


在一个名为main.c的文件中,调用这两个函数:

  1. #include <stdio.h>
  2. #include "sort.c"
  3. #include "search.c"

  4. int main()
  5. {
  6.     int arr[] = { 12, 11, 13, 5, 6 };
  7.     int n = sizeof(arr) / sizeof(arr[0]);

  8.     insertionSort(arr, n);

  9.     int x = 13;
  10.     int result = binarySearch(arr, 0, n - 1, x);
  11.     (result == -1) ? printf("Element is not present in array")
  12.                    : printf("Element is present at index %d", result);

  13.     return 0;
  14. }
复制代码


这样,您就可以在一个项目中创建两个.c文件并运行不同的代码了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-9 12:22:28 | 显示全部楼层    本楼为最佳答案   
在一个项目中创建两个.c文件,满足它们可以运行不同的代码,需要在一个文件中定义main函数,另一个文件中定义其他函数,然后在main函数中调用其他函数。

例如,在一个名为sort.c的文件中编写插入排序的代码:

  1. void insertionSort(int arr[], int n)
  2. {
  3.     int i, key, j;
  4.     for (i = 1; i < n; i++)
  5.     {
  6.         key = arr[ i];
  7.         j = i - 1;

  8.         while (j >= 0 && arr[j] > key)
  9.         {
  10.             arr[j + 1] = arr[j];
  11.             j = j - 1;
  12.         }
  13.         arr[j + 1] = key;
  14.     }
  15. }
复制代码


在另一个名为search.c的文件中编写二分查找的代码:

  1. int binarySearch(int arr[], int l, int r, int x)
  2. {
  3.     if (r >= l)
  4.     {
  5.         int mid = l + (r - l) / 2;

  6.         if (arr[mid] == x)
  7.             return mid;

  8.         if (arr[mid] > x)
  9.             return binarySearch(arr, l, mid - 1, x);

  10.         return binarySearch(arr, mid + 1, r, x);
  11.     }

  12.     return -1;
  13. }
复制代码


在一个名为main.c的文件中,调用这两个函数:

  1. #include <stdio.h>
  2. #include "sort.c"
  3. #include "search.c"

  4. int main()
  5. {
  6.     int arr[] = { 12, 11, 13, 5, 6 };
  7.     int n = sizeof(arr) / sizeof(arr[0]);

  8.     insertionSort(arr, n);

  9.     int x = 13;
  10.     int result = binarySearch(arr, 0, n - 1, x);
  11.     (result == -1) ? printf("Element is not present in array")
  12.                    : printf("Element is present at index %d", result);

  13.     return 0;
  14. }
复制代码


这样,您就可以在一个项目中创建两个.c文件并运行不同的代码了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-9 12:23:25 | 显示全部楼层
在一个项目中创建多个 .c 文件是非常常见的,你可以按照以下步骤进行操作:

1. 在 CLion 中打开你的项目。
2. 在项目文件目录中,右键点击你的项目文件夹,选择 "New" -> "C/C++ Source File"。
3. 输入一个新的文件名,比如 insertion_sort.c,并点击 "OK"。
4. 重复上述步骤,创建另一个文件,比如 binary_search.c

现在你的项目中就有两个 .c 文件了:insertion_sort.cbinary_search.c

如果你在这两个文件中都写了 main 函数,并且尝试同时编译运行这两个文件,就会出现错误提示 "multiple definition of 'main'",因为一个程序中只能有一个 main 函数。

为了解决这个问题,你需要将其中一个文件中的 main 函数改名。比如,你可以将 binary_search.c 中的 main 函数重命名为 binary_search_main,然后在另一个文件 insertion_sort.c 中保留 main 函数。

binary_search.c 文件中的 main 函数改名后的代码示例:
  1. #include <stdio.h>
  2. int binary_search_main() {
  3.     // your binary search code here
  4. }
  5. int main() {
  6.     // your other code here
  7. }
复制代码

这样做之后,就不会再出现 "multiple definition of 'main'" 的错误了。你可以编译和运行这两个文件,它们将会被作为独立的程序执行。

希望这个回答对你有帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 04:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表