① “C语言的预处理 不能实现宏定义和条件编译的功能”和“C语言的预处理不能实现宏定义和条件编译的功能”
这两句话是一个意思, C语言中的预处理,是可以实现宏定义和条件编译功能的。比如下面的代码定义了一个宏S,它的值是”hello world ",可以用printf函数直接打印出来。
#include<stdio.h>
#defineS"helloworld "
intmain()
{
printf(S);
return0;
}
C语言中的预处理也可以实现条件编译功能,预处理到现在依然存在的一个重要原因就在于此。比如下面的代码:
#include<stdio.h>
intmain()
{
#ifdef_DEBUG
printf("程序生成的debug版 ");
#else
printf("程序生成的是release版 ");
#endif
return0;
}
② c语言中的“宏”是指什么
宏定义是C语言提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。宏定义和操作符的区别是:宏定义是替换,不做计算,也不做表达式求解。
③ C语言宏定义 用条件编译
条件
编译以及所有前面带“#”的语句,是在编译
阶段
执行的语句,不会生成
运行时
的
代码
。而你的y是在运行时才进行赋值的,所以是无法用条件编译来实现的。
直接写成条件语句就行:
{
if
R
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}