IOS基础之宏定义

来源:互联网 发布:最小公倍数的算法 编辑:程序博客网 时间:2024/05/17 20:27

宏定义#define:
定义和使用同C

/ :表示换行
# :字符串操作符,用于将参数序列化成一个字符串;
## :连接符,用于将相邻的两个标记(Token)连接为一个。使用是分隔(根据空格或其他操作分隔符[+,-,*,/,”,”等]),再强制连接(去掉和前面的字符串间的空格,再连接起来)。
@# :字符化操作符,只能用于有参数传入的宏定义中,必须置于宏定义体参数名前,作用是将传入的单字符参数名转换成字符,以一对单引号括起来。
可变参数宏:#define DBGMSG(format, …) fprintf (stderr, format, __VA_ARGS__)
… 表示一个可变化的参数表,变参必须放于最后一个参数;
__VA_ARGS__:参数标识符。调用时会替代函数形参里的最后一个变参;
#pragma:说明编译器信息
_Pragma:同#pragma,但功能更强大;
#warning:显示编译警告信息
#error:显示编译错误信息
#line:标志该语言的行号
【可变参数宏不被ANSI/ISO C++所支持,iOS支持】

C语言中预定义宏:
__FILE__ :当前源代码的文件名(字符串)
__LINE__:当前源代码中的行号(整型)
__DATE__:进行预处理的日期(”Mmm dd yyyy”形式的字符串)
__TIME__:源文件编译时间(格式“hh:mm:ss”)
__FUNCTION__:同__func__(但IDE不支持),当前源代码的函数名
__PRETTY_FUNCTION__:同__FUNCITON__,但在g++下会输类名、函数名及其他函数信息
例:

#ifdef __OBJC__ //表示下面定义的宏内容只被使用Oc语言的文件所引用 #ifdef DEBUG//debug环境,在调用NSLog后,自动将参数拼接后再使用系统的NSLog打印#define NSLog(str, ...)  NSLog(@"%s(%d): " str, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)#else#define NSLog(...) {}//正式环境,调用到NSLog后,不做操作#endif#define BLOCK_EXEC(block, ...) if (block) { block(__VA_ARGS__); };//在执行block前判空,若一个空的block执行,会出现EXEC_BAD_ACCESS异常

宏定义(define)与常量(const)的使用:

宏定义:#define NAME @“fansion” //只在预处理里做文本替换,没有类型,不做类型检查。大量使用宏会导致二进制文件变大

变量:NSString *NAME = @“fansion”;//共享一块内存空间,若项目中N处用到,也不会分配N块内存空间,可被修改,在编译阶段会检查类型

常量:(四种方式)\共享一块内存空间

局部常量:static const NSString *NAME = @“fansion”;//用static修饰后外部不能访问

全局常量:不管在哪个文件夹,外部都能访问;
const NSString *NAME = @“fansion”;//*NAME不能被修改,NAME可以
NSString const *NAME = @“fansion”;//*NAME不能被修改,NAME可以
NSString *const NAME = @“fansion”;//*NAME能被修改,NAME不可以
const位置不同,代表的意义不同;const只修饰右边的内容,即右边的内容不能被修改。

【可认为*是一个分界,把一个声明从右向左读。如:const char *p即:p is a pointer to a const char(常量字符);char * const p即:p is a const pointer(常量指针) to a char】

博客地址:IOS基础之宏定义

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 做nt小孩头朝下怎么办 简历上传的照片太大怎么办 本科毕业论文没写英文摘要怎么办 气泵储气罐有个小眼漏气怎么办 吸拉开关坏了怎么办 窗口数量已达上限怎么办 村土地原始台账没有怎么办 涂防晒霜后出汗怎么办 张拉千斤顶泄荷回油不到位怎么办 隧道二衬打到一半没混凝土怎么办 在左车道骑电动车撞到车怎么办 电镐钻头卡住了怎么办 玩具机器人无线遥控不了怎么办 电锤锤头卸不下来怎么办 打地基没打出硬土层怎么办 中标的项目经理没有B证怎么办 12306证件被注册过怎么办 政府3p项目不给钱怎么办 电气没考上国网怎么办 小区宽带业务被个人承包怎么办 高铁用户名忘了怎么办 昆山社保号是8位怎么办 高铁票误了时间怎么办 动车票没赶上车怎么办 铁路用户名已存在要怎么办 铁路12306用户名忘了怎么办 铁路12306的用户名忘了怎么办 铁路12306注册名已存在怎么办 12306账号密码忘记了怎么办 12306登录名忘记了怎么办 电脑系统崩溃开不了机怎么办 高铁车票没赶上怎么办 机票错点了退票怎么办 快递号码留错了怎么办 物流号码留错了怎么办 12306身份信息被注册怎么办 12306注册身份信息重复怎么办 12306账号被注册了怎么办 高铁账号忘记了怎么办 铁路12306网站密码错误怎么办 网上买火车票密码忘了怎么办