C语言中#Ifdef的介绍
#ifdef是C语言中的一个指令,允许有条件的编译。在这里,预处理器在编译过程中包括下一段代码之前,会检查上述宏是否存在。与C语言中的其他指令不同,这个指令是最容易和最简单的一个。这里使用的块被称为条件组。只有当宏的名称被定义后,被控制的文本才会参与到预处理程序的输出中。在一个条件中被控制的文本将持有预处理指令。这些指令只有在条件得到满足时才会执行。让我们在下面的章节中研究它。
语法
下面是C语言中#ifdef指令的语法。
#ifdef MACRO //controlled text #endif /* name_of_macro */
下面是C语言中#ifdef指令的语法,其中也有一个else部分。
#ifdef MACRO // code… #else //code of else…. #endif
宏的定义必须为预处理程序所定义,以便将C语言的源代码纳入编译后的应用程序。正如上述语法中提到的,#ifdef指令必须用#endif指令来结束。
#Ifdef在C语言中如何工作?
首先,在main方法中创建一个#ifdef部分。然后,根据需求添加一个else部分。最后,在代码块完成后使用#endif。这有助于识别代码是否完整。
使用#ifdef指令创建代码时必须遵循的规则。
- 条件中的NAME OF MACRO可以包含预处理指令。
- 只有当条件成功时,代码才会执行。
- 条件组的嵌套可以在其他条件组内进行。
- 如果宏被定义,条件得到成功。否则,它将失败。
- 一个条件组不能在一个文件中开始而在另一个文件中结束。
C语言中#Ifdef的例子
让我们看看一些关于#ifdef指令的示例程序。
例子 #1
使用#ifdef指令打印#定义的值的C语言程序。(只有if部分存在)
代码:
#include <stdio.h> #define AGE 32 int main() { //executes if AGE is present #ifdef AGE printf("I am %d years old.\n", AGE); #endif printf("This is a sample program on #ifdef directive...\n"); return 0; }
输出。
在这个程序中,在#define的帮助下,一个常数AGE被定义为32。在main方法中,#ifdef AGE被使用,当AGE的值出现时,它被执行。循环外的一行也会在执行代码时被打印出来。
例子#2
C程序使用#ifdef指令打印#定义的值。(if和else是存在的)
代码。
#include <stdio.h> #define AGE 32 int main() { //executes if AGE is present #ifdef AGE printf("I am %d years old.\n", AGE); //executes if AGE is not present #else printf("Your age is not as expected..\n"); #endif printf("This is a sample program on #ifdef directive...\n"); return 0; }
输出。
在这个程序中,在#define的帮助下,一个常数AGE被定义为32。在main方法中,#ifdef AGE被使用,当AGE的值出现时,它被执行。与上面的程序不同,这段代码中也有一个else部分。循环外的一行也会在执行该代码时被打印出来。
例子#3
实现#ifdef指令的C语言程序。(if和else都存在)
代码。
#include <stdio.h> //#define AGE 32 int main() { //executes if AGE is present #ifdef AGE printf("I am %d years old.\n", AGE); //executes if AGE is present #else printf("Your age is not as expected..\n"); #endif printf("This is a sample program on #ifdef directive...\n"); return 0; }
输出。
在这个程序中,在#define的帮助下,常数AGE也被定义为32。但是,与上面的程序不同,这一行被注释了,这意味着AGE不存在于这段代码中。在main方法中,#ifdef AGE被使用,同时也使用了else部分。由于没有AGE的值,else部分被执行。在执行该代码时,循环外的一行也会被打印出来。
例子 #4
使用#ifdef指令显示今天的日期的C语言程序。(if和else是存在的)
代码。
#include<stdio.h> int main(){ #ifdef __DATE__ printf("Todays date is : %s",__DATE__); #else printf("Sorry, the data is not defined"); #endif return 0; }
输出。
在这个程序中,头文件<stdio.h>中定义的一个全局标识符DATE被用来获取今天的日期。在main方法中,#ifdef DATE被使用,并且被执行。在执行该代码时,今天的日期被打印出来。
例子 #5
使用NOINPUT和#ifdef指令的C语言程序。
代码。
#include <stdio.h> #include <conio.h> #define NOINPUT void main() { int n=8; //no need of input #ifdef NOINPUT n=7; #else printf("Enter the value that has to be assigned to n:"); scanf("%d", &n); #endif printf("The value of n is : %d\n", n); getch(); }
输出。
在这个程序中,NOINPUT被定义在#define部分。在main方法中,#ifdef和else部分是存在的。由于NOINPUT的存在,所以不需要输入一个值。这意味着if部分被执行。在执行代码时,if部分中的n值被打印出来。
例子#6
在#ifdef指令的同时注释NOINPUT的C语言程序。
代码。
#include <stdio.h> #include <conio.h> //#define NOINPUT void main() { int n=8; //no need of input #ifdef NOINPUT n=7; #else printf("Enter the value that has to be assigned to n: "); scanf("%d", &n); #endif printf("The value of n is : %d\n", n); getch(); }
输出。
在这个程序中,尽管NOINPUT是在#define部分定义的,但它被注释了。由于NOINPUT不存在,所以必须要输入值。这意味着,else部分被执行。在执行代码时,n的值必须被作为输入,并被打印出来。
结论
#ifdef是C语言中的一个指令,允许有条件的编译。在这篇文章中,详细解释了#ifdef的语法、工作和例子等不同方面。
推荐文章
这是一份关于C语言中#Ifdef的指南。在这里,我们讨论了#Ifdef在C语言中如何工作,包括语法和例子,以及代码和输出。你也可以看看下面的文章,以了解更多信息
The post#Ifdef in Cappeared first onEDUCBA.