このプログラムのおかしいところを教えてください
関数形式マクロでint型とdouble型の差を求めるやつなのですが
コンパイルできません・・・
#include <stdio.h>

#define diff(x,y) ((x>y) ? (x-y) : (y-x))
{
int nx,ny;
double dx,dy;

puts("二つの整数を入力してください。");
printf("整数A:"); scanf("%d",&nx);
printf("整数B:"); scanf("%d",&ny);
printf("その差は%dです。\n",diff(nx,ny));

puts("二つの実数を入力してください。");
printf("整数A:"); scanf("%lf",&dx);
printf("整数B:"); scanf("%lf",&dy);
printf("その差は%fです。\n",diff(dx,dy));

return 0;
}