鱼C论坛

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

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

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

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

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

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

例如,在一个名为sort.c的文件中编写插入排序的代码:
void insertionSort(int arr[], int n)
{
    int i, key, j;
    for (i = 1; i < n; i++)
    {
        key = arr[ i];
        j = i - 1;

        while (j >= 0 && arr[j] > key)
        {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

在另一个名为search.c的文件中编写二分查找的代码:
int binarySearch(int arr[], int l, int r, int x)
{
    if (r >= l)
    {
        int mid = l + (r - l) / 2;

        if (arr[mid] == x)
            return mid;

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

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

    return -1;
}

在一个名为main.c的文件中,调用这两个函数:
#include <stdio.h>
#include "sort.c"
#include "search.c"

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

    insertionSort(arr, n);

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

    return 0;
}

这样,您就可以在一个项目中创建两个.c文件并运行不同的代码了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

例如,在一个名为sort.c的文件中编写插入排序的代码:
void insertionSort(int arr[], int n)
{
    int i, key, j;
    for (i = 1; i < n; i++)
    {
        key = arr[ i];
        j = i - 1;

        while (j >= 0 && arr[j] > key)
        {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

在另一个名为search.c的文件中编写二分查找的代码:
int binarySearch(int arr[], int l, int r, int x)
{
    if (r >= l)
    {
        int mid = l + (r - l) / 2;

        if (arr[mid] == x)
            return mid;

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

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

    return -1;
}

在一个名为main.c的文件中,调用这两个函数:
#include <stdio.h>
#include "sort.c"
#include "search.c"

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

    insertionSort(arr, n);

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

    return 0;
}

这样,您就可以在一个项目中创建两个.c文件并运行不同的代码了。
想知道小甲鱼最近在做啥?请访问 -> 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 函数改名后的代码示例:
#include <stdio.h>int binary_search_main() {    // your binary search code here}int main() {    // your other code here}
这样做之后,就不会再出现 "multiple definition of 'main'" 的错误了。你可以编译和运行这两个文件,它们将会被作为独立的程序执行。

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

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 23:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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