归并排序的语法错误在MergePass函数一开始的{就标红

问题遇到的现象和发生背景

在学习和写c语言归并排序的时候发生的错误 ,希望=纠错

用代码块功能插入代码,请勿粘贴截图

#include
#define MAXSIZE 50
typedef int ElemType;
typedef struct Sqlist
{
    ElemType data[MAXSIZE];

    int length;
    int r;


}Sqlist;
void Merge(int SR[], int TR[], int i, int m, int n)
{
    int j, k, l;
    for (j = m + 1, k = i; i <= m && j <= n; k++)
    {
        if (SR[i] < SR[j])
        {
            TR[k] = SR[j++];
        }
        else
            TR[k] = SR[j++];
    }
    if (i <= m)
    {

        for (l = 0; l <= m - i; l++)
        {
            TR[k + l] = SR[i + l];
        }
        if (j <= n)
        {

            for (l = 0; l <= n - j; l++)
            {

                TR[k + l] = SR[j + l];

            }

        }
    }
void MergePass(int SR[], int TR[], int s, int n)
{//<-在此处的大括号标红色波浪线//将SR[]中相邻长度为s的子序列两两归并到TR[]
        int i = 1;
        int j;
        while (i <= n - 2 * s + 1)//两两归并
        {
            Merge(SR, TR, i, i + s - 1, i + 2 * s - 1);
            i = i + 2 * s;
        }
        if (i < n - s + 1)       //归并最后两个序列
            Merge(SR, TR, i, i + s - 1, n);
        else
        {//若最后只剩下单个子序列
            for (j = i; j <= n; j++)
            {
                TR[j] = SR[j];
            }
        }
}


int MergeSort(Sqlist * L)
{
        int* TR = (int*)malloc(L->length * sizeof(int));
        int k = 1;
        while (k < L->length)
        {
            MergePass(L->r, TR, k, L->length);
            k = 2 * k;
            MergePass(TR, L->r, k, L->length);
            k = 2 * k;
        }
}

    int main()
    {
        int A[] = { 5,8,9,10,78,7,21,12,1,5,6 };
        int ret = sizeof(A) / sizeof(A[0]);
        struct Sqlist B = { A,ret,1 };
        MergeSort(A);

    }

Merge函数显然最后少了一个大括号啊。