生活
条件编译 、条件编译有什么用
2023-04-08 01:12  浏览:30

iOS开发之条件编译

#if  (条件语句)

条件符合执行的语句

#elif (条件语句)

条件符合执行的语句

#else

所有条件不符合时,执行的语句

#endif

在条件编译中,只编译条件满足时,之后的语句,其余语句不编译。(这里指#if和#endif之间的语句)

条件语句一般使用宏定义

例1:在iOS10及iOS10以上运行

#if __IPHONE_OS_VERSION_MAX_ALLOWED = __IPHONE_10_0

#endif

例2:在宏定义DEBUG时执行执行,没有则不执行

#define DEBUG

#ifdef DEBUG

条件符合执行的语

#endif

条件编译的指令

条件编译指令将决定哪些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。 一般形式有如下几种

(1) #if表达式//语句段1#else//语句段2]#endif如果表达式为真,就编译语句段1,否则编译语句段2

(2) #if表达式1//语句段1#elif表达式2//语句段2#else//语句段3#endif如果表达式1真,则编译语句段1,否则判断表达式2;如果表达式2为真,则编译语句段2,否则编译语句段3 (1)#ifdef的一般形式: #ifdef宏名//语句段#endif作用:如果在此之前已定义了这样的宏名,则编译语句段。

(2)#ifndef的一般形式: #ifndef宏名//语句段#endif作用:如果在此之前没有定义这样的宏名,则编译语句段。

#else可以用于#ifdef和#ifndef中,但#elif不可以。 #includestdio.h#define LETTER1int main(int argc,char*argv[]){char str[20]=CLanguage,c;int i;i=0;while((c=str[i])!=''){i++;#ifdef LETTER1if(c='a'c='z')c=c-32;#elseif(c='A'c='Z')c=c+32;#endifprintf(%c,c);}return0;}运行结果为clANGUAGE

C++常见条件编译用法

条件编译命令最常见的形式为:

#ifdef 标识符

程序段1

#else

程序段2

#endif

它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。

其中#else部分也可以没有,即:

#ifdef

程序段1

#endif

这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。如果一个C源程序在不同计算机系统上系统上运行,而不同的计算机又有一定的差异。例如,我们有一个数据类型,在Windows平台中,应该使用long类型表示,而在其他平台应该使用float表示,这样往往需要对源程序作必要的修改,这就降低了程序的通用性。

C语言中条件编译的作用

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

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

#if指令的形式为:

#if 常量表达式

代码块

#endif

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

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

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

形式1:

#ifdef 标识符

#else

#endif

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

   #ifdef 标识符

   #endif

形式2:

   #ifndef 标识符

#define 标识符

#else

#endif

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

   #ifndef 标识符

#define 标识符

# endif

形式3:

 #if 表达式

#else

*程序段 2*/

# endif

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

# if 表达式

# endif

形式4:

    #if 表达式1

    

    #elif 表达式2

    

    ............

    #elif 表达式n

    

    #endif

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

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

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

#ifndef _STDIO_H_

#define _STDIO_H_

#endif

c语言中,什么是条件编译

A B 正确。

当标识符已经被define定义,条件为真,编译程序段1;否则编译程序段2

JAVA如何实现条件编译

条件编译绝对是一个好东西。如在C或CPP中,可以通过预处理语句来实现条件编译。代码如下:

#IFDEF DEBUG

#UNDEF DEBUG

#ENDIF

#define DEBUG

#IFDEF DEBUUG

#ELSE

#ENDIF

但是在JAVA中却没有预处理,宏定义这些东西,而有时在一些项目中,我们又需要条件编译。那么,在JAVA中,该如何实现条件编译呢?

我们来看一个例子。

编写一个helloworld程序。代码如下:

public class Hello {

public static void main(String[] args) {

System.out.println("Hello, world!");

}

}

保存为Hello.java并编译,得到一个class文件,并且观察到文件大小是417字节。然后我们对这个文件进行反编译,用jd-gui。得到代码如下:

import java.io.PrintStream;

public class Hello

条件编译的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于条件编译有什么用、条件编译的信息别忘了在本站进行查找喔。

发表评论
0评