c语言中')'标记之前的预期主表达式

expected primary-expression before ')' token in c language

我正在练习选择排序并从 Horowitz 的数据结构中复制代码。 我正在处理“')' 标记之前的预期主表达式错误。”

这是我写的代码。

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1))

int binsearch(int list[], int searchnum, int left, int right)
{
int middle; 
while(left <= right){
    middle = (left + right) / 2;
    switch(compare(list[middle], searchnum)){   //  error occured
        case -1: right = middle -1; break;
        case 0: return middle;
        case 1: left = middle + 1;
    }
}   
return -1; 
}

我想知道我应该怎么做才能解决这个问题。 感谢您的帮助。

#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1))

这个宏的末尾有一个额外的右括号。做到:

#define compare(x, y) (((x) < (y)) ? -1 : ((x) == (y)) ? 0 : 1)

如果您愿意,也可以去掉 <== 比较前后的括号。

#define compare(x, y) ((x) < (y) ? -1 : (x) == (y) ? 0 : 1)