首页 > 解决方案 > c中的内联函数

问题描述

我有用于对数组进行排序的内联 c 交换函数,但在编译时它给出了交换引用未定义的错误。通过删除它可以工作的交换;代码有什么问题

inline void swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

void sort(int ar[])
{
    int length = sizeof(ar) / sizeof(int);
    for(int i = 0; i < length; i++)
    {
        for(int j = i; j < length; j++)
        {
            if(ar[j] < ar[i])
            {
                swap(&ar[j], &ar[i]);
            }
        }
    }
}

标签: ccompiler-errorsinline

解决方案


int length = sizeof(ar) / sizeof(int);

传递数组的长度,而不是尝试做某事(这不起作用)。

删除inline,它不相关并导致您的问题。如果编译器可以优化它,它将内联它,否则它只是你给编译器的一个建议,仅此而已。


推荐阅读