در کد زیر ماکرو رو تعریف کردم که دو عدد می گیره و عدد بزرگتر رو بر می گردونه مشکلی که دارم اینه که وقتی ماکرو kprint رو تعریف کردم دیگه برنامه درست کار نمی کنه و خروجی زیر رو می ده :
40
40
Kave
من متوجه نشدم که مشکل از کجاست میشه راهنمایی کنید.
سوال دومم هم در مورد تابع printf هست که چرا در ماکرو ها اینطوری تعریف میشه ؟
سوالم اینه که آیا اصولا تعریف ها در ماکرو و بدنه ی اصلی توابع متفاوتن؟
تشکر.
#include<stdio.h>
#define BIG(NUM1,NUM2) NUM1 >= NUM2 ? NUM1 : NUM2
#define kprint( name ) \
printf ( "%s" #name "\n" )
int main ( void ) {
printf ( "%d\n" , BIG(40 , 20 ) ) ;
kprint(kave) ;
return 0 ;
}