A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SSIrreplaceable 中级黑马   /  2016-7-6 09:06  /  1627 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

条件编译里面 标识符的下划线代表什么?


11 个回复

正序浏览
M.W 中级黑马 2016-7-7 17:54:21
12#
SSIrreplaceable 发表于 2016-7-7 17:42
大哥,我也是从哪里复制出来的!然后谢谢的热情解答,最后你回去看看我到底问什么。 ...

哈哈尴尬了
回复 使用道具 举报
M.W 发表于 2016-7-7 13:18
这个是NSObject头文件的宏定义:

大哥,我也是从哪里复制出来的!然后谢谢的热情解答,最后你回去看看我到底问什么。
回复 使用道具 举报
M.W 中级黑马 2016-7-7 13:18:29
10#
SSIrreplaceable 发表于 2016-7-7 08:37
我知道你说的是标识符的命名规则,这个我知道,但是我问的不是那个意思。
那三行条件编译是Xcode自动生成 ...

这个是NSObject头文件的宏定义:


在.pch 文件中一般都会自动加上这句宏定义
表示宏内引用的文件确保只被使用Objective-C语言的文件所引用,保证引用关系的清晰

回复 使用道具 举报
这种的应该是系统自动生成的吧,就想系统自动生成的防止文件重复包含的条件语句代码一样
回复 使用道具 举报
M.W 发表于 2016-7-6 22:47
标识符的命名原则
命名规则
        A,只能用字母、数字、下划线或美元符号($)组成

我知道你说的是标识符的命名规则,这个我知道,但是我问的不是那个意思。
那三行条件编译是Xcode自动生成的,是配合#include使用,没有那三行条件编译,会导致重复编译。
我的问题的是,我的头文件写的时候,没有下划线,可是系统生成的时候有下划线,头文件件全部变大写,加入了几个下划线,点也变下划线了,我想问的是下划线代表什么?在条件编译里除这个用法,还有其他用法吗?
回复 使用道具 举报
M.W 中级黑马 2016-7-6 22:47:47
7#
SSIrreplaceable 发表于 2016-7-6 19:26
#ifndef _OBJC_NSOBJECT_H_
#define _OBJC_NSOBJECT_H_
#if __OBJC__

标识符的命名原则
命名规则
        A,只能用字母、数字、下划线或美元符号($)组成
        B,不能以数字开头
        C,不能与关键字重名
        D,严格区分大小写

标识符就像是一个人的名字
就像你的这段代码中:“__OBJC__”和“_OBJC_NSOBJECT_H_”你可以写下划线,也可以不用下划线命名。只要符合标识符的命名规范。
举个栗子,好重啊:
一个人的名字是“张三”,那他当然也可以重新改个名字。
另外说一下,条件编译要以#end if结尾
回复 使用道具 举报
M.W 发表于 2016-7-6 09:23
条件编译不是 #if...#endif 么?楼主指的下划线是哪个?

#ifndef _OBJC_NSOBJECT_H_
#define _OBJC_NSOBJECT_H_
#if __OBJC__

标识符的下划线代表什么?
回复 使用道具 举报
lijunyusmile 发表于 2016-7-6 18:17
条件编译里用下划线吗?我怎么记得是这么写的
#ifndef
       #include

#ifndef _OBJC_NSOBJECT_H_
#define _OBJC_NSOBJECT_H_
#if __OBJC__

是可以不用,我想问的是这些下划线的含义。
回复 使用道具 举报
M.W 发表于 2016-7-6 09:23
条件编译不是 #if...#endif 么?楼主指的下划线是哪个?

#ifndef _OBJC_NSOBJECT_H_
#define _OBJC_NSOBJECT_H_
#if __OBJC__

上面的下划线
回复 使用道具 举报
条件编译里用下划线吗?我怎么记得是这么写的
#ifndef
       #include<...>
#define
      #include<...>
#endif
差不多就这样吧
回复 使用道具 举报
条件编译不是 #if...#endif 么?楼主指的下划线是哪个?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马