C语言宏定义 用条件编译

来源:百度知道 编辑:UC知道 时间:2024/05/03 18:32:15
#include<stdio.h>
#define R (y%4==0&&y%100!=0)||(y%400==0)

void main()
{
int y;
scanf("%d",&y);
{
#if R
printf("%d是闰年\n",y);
#else
printf("%d不是闰年\n",y);
#endif
}
}

请高手修改一下,判断是否是闰年
去掉#后还是备件编译吗

条件编译以及所有前面带“#”的语句,是在编译阶段执行的语句,不会生成运行时的代码。而你的y是在运行时才进行赋值的,所以是无法用条件编译来实现的。
直接写成条件语句就行:
{
if R
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}

其实不用那样麻烦,把#if,#else中的#删掉
#else if去掉,就可以了。

你在搞什么哦,条件编译是选择编译程序段的,标志是ifdef