Swift条件编译

Swift条件编译,第1张

let name = "name"

print("实际内存大小", MemoryLayout.size(ofValue: name))

print("内存对齐大小", MemoryLayout.alignment(ofValue: name))

print("分配的内存大小", MemoryLayout.stride(ofValue: name))

可以在 Build settings swift compiler - custom flags 中设置Flag(eg: MYDEBUG)

...

...

...

暂不清楚 compiler() 与 swift() 的区别

...

...

目前应该只有模拟器 simulator 一个值

...

endif是什么意思啊? 1 end if 是if语句的结束,所有if条件在这里结束.

2 exit sub是指,exit sub语句上面的语句到此结束,下面的语句重新开始.

3 END SUB则是指整个过程到此结束,比如单击过程等.

#if #endif 是什么意思啊?

#if #endif 为C/C++预编译命令之一,称为条件编译。

1、形式:

#if condition代码段。#endif

其中condition中必须是常量,或者由常量组成的表达式,表达式必须为比较或者逻辑运算。

如果condition值为真,那么代码段部分将被编译,否则将不被编译。

2、举例:

#define INC_CODE 1#if INC_CODEint func(){return 0}#endif

这里用宏定义INC_CODE来控制是否编译函数func。 当前代码中,INC_CODE 设置为1,则func将被编译。如果修改代码为

#define INC_CODE 0

那么func将不会编译。

#endif 是什么意思?

首先#endif 是预编译处理指令中的条件编译。

预编译处理是指在编译系统对文件进行编译---词法分析、语法分析、代码生成及优化之前,对一些特殊的编译语句先进行处理,然后将处理结果与源程序一起编译,生成目标文件。

编辑本段

预编译处理语句都是以#开头,其结尾不带分号,与普通程序语句相区别。

#endif用于结束条件编译,编译时与前面最近的#if、#ifdef或#ifndef作为一对,经常一起使用,编译两者之间的部分程序段。

希望对你有帮助!

endif esle indef是什么意思

endif esle indef是如果其他的通行证的意思。

电子往来港澳通行证,公安部将在广东试点启用的往来港澳通行证的电子版本,2014年5月20日起受理申请。[2] 即将启用的电子通行证存有数字化的个人资料和指纹信息,可以使用口岸自助查验通道实现自助通关。[2]

2014年9月,为进一步便利内地居民往来港澳地区,提高往来港澳通行证、签注的签发和查验效率,增强证件防伪性能,在广东省试点签发取得成功的基础上,公安部决定,全国公安机关出入境管理部门自9月15日起全面启用电子往来港澳通行证(即2014版往来港澳通行证)。[3]

电子往来港澳通行证为参照有关国际标准设计制作的卡式证件,内部嵌有非接触式集成电路芯片,存储持证人个人资料及证件、签注签发管理信息,采用成熟的数字安全防伪机制进行保护,印制过程中还使用了多项物理防伪技术,防伪能力明显增强。电子往来港澳通行证启用后,往来港澳签注不再采取贴纸的方式,而是直接打印在证件背面(可以重复擦写)。内地和港澳地区口岸查验部门查验时不再加盖验讫章,签注使用情况由计算机信息系统记录管理,有需要的持证人可向内地及港澳地区主管部门查询签注剩余次数等信息。[3]

根据《中华人民共和国出境入境管理法》的规定,经国务院批准,公安机关出入境管理部门对首次申请电子往来港澳通行证的16周岁以上(含)的申请人将采集或核验指纹,对16周岁以下的申请人是否采集指纹根据其监护人的意见确定。留存指纹后,符合条件的持证人在通关时可以使用内地和港澳地区口岸的自助查验通道。对于希望使用港澳地区自助查验通道的申请人,只需在申请证件时签署《电子往来港澳通行证持证人免登记使用港澳地区自助查验通道声明》(未满16周岁的由监护人签署),无须事先向港澳地区主管部门登记备案指纹信息,实现一次备案、三地自助通关。为确保持证人指纹信息安全,内地和港澳地区主管部门均建立了严密的管理制度,并采用多种技术保护措施,芯片中存储的持证人指纹模板信息无法被还原为原始指纹图像,只能用作判别人证同一性的依据。[3]

此外, *** 子往来港澳通行证有效期延长为10年,对未满16周岁的仍签发5年有效通行证。电子往来港澳通行证及签注的收费标准不变。电子往来港澳通行证启用后,仍在有效期内的现行往来港澳通行证(本式)及往来港澳签注(贴纸式)可以继续使用。持用本式往来港澳通行证的,可以继续申请贴纸式往来港澳签注,也可以申请换发电子往来港澳通行证。[3]

C语言 #ifdef #endif 是什么意思?

#ifdef #endif是C语言的条件编译。

一般情况下,源程序中所有的行都参加编译。但有时希望对其中一部分内容只在满足一定条件下才进行编译,即对一部分内容指定编译条件,这就是“条件编译”(conditional pile)。

#ifdef的一般形式:

#ifdef宏名

语句段

#endif

作用:如果在此之前已定义了这样的宏名,则编译语句段。

<!--[if !supportLists]-->1. <!--[endif]-->是什么意思

<!--隐藏-->

C语言问题:#if #endif #else是什么意思呀~~

#开头的语句,是预编译指令

也就是说,这些语句,在编译之前,就对他们进行了处理

#include <stdio.h>告诉编译器,要参与编译的文件

#define r 16 告诉编译器,r就是16

#if r==16 告诉编译器,r==16的时候,编译下面这段,否则编译else部分的内容

void p(int a)

{

printf("%x",a)

}

#else 告诉编译器,#if的另外一个部分

void p(int a)

{

printf("%d",a)

}

#endif 告诉编译器,#if的结束

void main()

{

p(32)

}

#if OS_CRITICAL_METHOD == 3 OS_CPU_SR cpu_sr#endif 是什么意思

预编译指令

#if 条件满足

指令 否则这条指令不编译

#endif

c语言中的#ifndef,def,endif等宏是什么意思

1、这是条件编译的命令

#ifndef def

语句1

# else

语句2

# endif

表示如果def在前面进行了宏定义那么就编译语句1(语句2不编译),否则编译语句2(语句1不编译)

2、宏定义的格式如下:

#define 标识符 字符串

其中,#表示这是一条预处理命令;#define为宏定义命令;“标识符”为宏定义的宏名;“字符串”可以上常数、表达式、格式串等。

举例如下:

#define PI 3.14 对3.14进行宏定义,宏名为PI

void main()

{

printf("%f", PI) 输出3.14

}

一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。

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

#ifdef 标识符

程序段1

#else

程序段2

#endif

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

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

#ifdef

程序段1

#denif

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

#ifdef WINDOWS

#define MYTYPE long

#else

#define MYTYPE float

#endif

如果在Windows上编译程序,则可以在程序的开始加上

#define WINDOWS

这样则编译下面的命令行:

#define MYTYPE long

如果在这组条件编译命令之前曾出现以下命令行:

#define WINDOW

则预编译后程序中的MYTYPE都用float代替。这样,源程序可以不必作任何修改就可以用于不同类型的计算机系统。当然以上介绍的只是一种简单的情况,可以根据此思路设计出其它的条件编译。

例如,在调试程序时,常常希望输出一些所需的信息,而在调试完成后不再输出这些信息。可以在源程序中插入以下的条件编译段:

#ifdef DEBUG

print ("device_open(%p)\n", file)

#endif

如果在它的前面有以下命令行:

#define DEBUG

则在程序运行时输出file指针的值,以便调试分析。调试完成后只需将这个define命令行删除即可。有人可能觉得不用条件编译也可达此目的,即在调试时加一批printf语句,调试后一一将printf语句删除去。的确,这是可以的。但是,当调试时加的printf语句比较多时,修改的工作量是很大的。用条件编译,则不必一一删改printf语句,只需删除前面的一条“#define DEBUG”命令即可,这时所有的用DEBUG作标识符的条件编译段都使其中的printf语句不起作用,即起统一控制的作用,如同一个“开关”一样。

有时也采用下面的形式:

#ifndef 标识符

程序段1

#else

程序段2

#endif

只是第一行与第一种形式不同:将“ifdef”改为“ifndef”。它的作用是:若标识符未被定义则编译程序段1,否则编译程序段2。这种形式与第一种形式的作用相反。

以上两种形式用法差不多,根据需要任选一种,视方便而定。

还有一种形式,就是#if后面的是一个表达式,而不是一个简单的标识符:

#if 表达式

程序段1

#else

程序段2

#endif

它的作用是:当指定的表达式值为真(非零)时就编译程序段1,否则编译程序段2。可以事先给定一定条件,使程序在不同的条件下执行不同的功能。

例如:输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写输出,或全改为小写字母输出。

#define LETTER 1

main()

{

char str[20]="C Language",c

int i=0

while((c=str[i])!='\0'){

i++

#if LETTER

if(c>='a'&&c<='z') c=c-32

#else

if(c>='A'&&c<='Z') c=c+32

#endif

printf("%c",c)

}

}

运行结果为:C LANGUAGE

现在先定义LETTER为1,这样在预处理条件编译命令时,由于LETTER为真(非零),则对第一个if语句进行编译,运行时使小写字母变大写。如果将程序第一行改为:

#define LETTER 0

则在预处理时,对第二个if语句进行编译处理,使大写字母变成小写字母(大写字母与相应的小写字母的ASCII代码差32)。此时运行情况为:

c language

有人会问:不用条件编译命令而直接用if语句也能达到要求,用条件编译命令有什么好处呢?的确,此问题完全可以不用条件编译处理,但那样做目标程序长(因为所有语句都编译),而采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。

补充:

头文件中的#ifndef

千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。

还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:

#ifndef <标识>

#define <标识>

......

......

#endif

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

#ifndef _STDIO_H_

#define _STDIO_H_

......

#endif


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/tougao/7798384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存