我在C中的宏做错了什么?

-1 c

#include <stdio.h>
#include <stdlib.h>

#define MAXIMUM(a,b) (a>b ? a:b)
#define MAX(a,b,c) (MAXIMUM(MAXIMUM(a,b),c))
#define MINIMUM(a,b) (a<b ? a:b)
#define MIN (a,b,c) (MINIMUM(MINIMUM(a,b),c))
#define MID(a,b,c) (MAX(a,b,c)+ MIN(a,b,c))/2


int main()
{
    int a=0; int b=0; int c=0;
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);
    float t = MID(a,b,c);
    printf("%f\n",t);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

left operand of comma has no operator in #define MID(a,b,c)
The expression cannot be used as a function in #define MIN
Run Code Online (Sandbox Code Playgroud)

Jam*_*nek 6

哦! 我知道你的问题是什么:

#define MIN (a,b,c) (MINIMUM(MINIMUM(a,b),c))
Run Code Online (Sandbox Code Playgroud)

应该

#define MIN(a,b,c) (MINIMUM(MINIMUM(a,b),c))
Run Code Online (Sandbox Code Playgroud)

预处理器是空白敏感的; MIN令牌及其参数列表之间不能有任何空格(a,b,c)