您现在的位置是:首页 >要闻 > 2023-07-22 08:12:16 来源:

c++条件编译(条件编译)

导读 大家好,我是小夏,我来为大家解答以上问题。c++条件编译,条件编译很多人还不知道,现在让我们一起来看看吧!1、条件编译属于三种宏定义中...

大家好,我是小夏,我来为大家解答以上问题。c++条件编译,条件编译很多人还不知道,现在让我们一起来看看吧!

1、条件编译属于三种宏定义中的一种,条件指示符的最主要目的是防止头文件的重复包含和编译,例如:一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误

2、条件编译常用的有四个预处理命令:#if、#else、#elif、#endif。

3、#if指令的形式为:

4、#if 常量表达式

5、代码块

6、#endif

7、#if后面的常量表达式为值,则编译它与#endif之间的代码,否则跳过这些代码。指令#endif标识一个#if块的结束。

8、#else被使用来标志#if的末尾和#else块的开始。这是必须的,因为任何#if仅有一个#endif与之关联。

9、#elif意指"else if",它形成一个if else if嵌套语句用于多种编译选择。#elif后面跟一个常量表达式,如果表达式是真,则编译其后的代码块,不对其他#elif表达式进行检测,否则顺序测试下一块。常见的形式如下:

10、形式1:

11、e69da5e6ba9062616964757a686964616f31333337626230#ifdef 标识符

12、  /*程序段 1*/

13、  #else

14、  /*程序段 2*/

15、  #endif

16、它的作用是当标识符已经由#define定义过了,则编译程序段1,否则编译程序段2,也可以使用简单形式

17、 #ifdef 标识符

18、  /*程序段1*/

19、   #endif

20、形式2:

21、  #ifndef 标识符

22、  #define 标识符

23、  /*程序段 1*/

24、  #else

25、  /*程序段 2*/

26、  #endif

27、  它的作用是当标识符没有由#define定义过,则编译程序段1,否则编译程序段2 ,也可以使用简单形式

28、  #ifndef 标识符

29、  #define 标识符

30、  /*程序段 1*/

31、  # endif

32、形式3:

33、 #if 表达式

34、  /*程序段 1*/

35、  #else

36、  *程序段 2*/

37、  # endif

38、  它的作用是 当“表达式”值为真时编译程序段1。否则则编译程序段2,也可以使用简单形式

39、  # if 表达式

40、  /*程序段 1*/

41、  # endif

42、形式4:

43、 #if 表达式1

44、 /*程序段 1*/

45、 #elif 表达式2

46、 /*程序段 2*/

47、 ............

48、 #elif 表达式n

49、 /*程序段n */

50、 #endif

51、 它的作用是当“表达式1”值为1时编译程序段1,表达式2的值为真是编译程序段2,否则依次顺序判断到表达式n。

52、最后,条件编译的条件是一个常量表达式,支持逻辑与&&和或||运算。以上四种形式的条件编译预处理结构都可以嵌套使用,

53、标识符: 在理论上来说可以是自由命名的,但每个头文件的这个标识符都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h。

54、#ifndef _STDIO_H_

55、#define _STDIO_H_

56、/*程序段 */

57、#endif

本文到此讲解完毕了,希望对大家有帮助。