Object-c程序整体语法结构
与C 语言兼容的地方:
预处理:
#define 语句和c 一样
#运算符: #define str(x) #x
表示在调用该宏时,预处理程序根据宏参数创建C 风格的常量字符串。
例如:str("hello")将产生"\"hello"\"
##运算符:
表示用于把两个标记连在一起
#import 语句相当于#include 语句,但是#import 可自动防止同一个文件被导入多次。
#条件编译语句(#ifdef 、#endif 、#else 、#ifndef)和C 一样
#undef 语句消除特定名称的定义
其他基本的C 语言特性:
数组、函数、指针、结构、联合的用法和C 一样。
Compound Literal 是包含在括号之内的类型名称,之后是一个初始化列表。
例如如果intPtr 为int * 类型:
intPtr = (int[100]){[0] = 1, [50] = 50, [99] = 99};
如果数组大小没有说明,则有初始化列表确定。
其他如循环语句(do while、while、for)、条件语句(if 语句(if-else、复合判断条件等)、switch 语句)、
Boolean(YES NO)、条件运算符、goto 语句、空语句、逗号表达式、sizeof 运算符、命令行参数、位操作都和C 一样。
程序的头文件和源文件的扩展名分别为.h 和.m。注释语法和C 一样。Object_C 中的nil 相当于NULL。Object_C 中的YES 和NO 相当于true 和false。这里再讲解一下YES 和NO:Object-c 提供了BOOL 类型,但这个BOOL 类型和C++里的并不一样:在C++里一切非0 值的东西都为true,而为0 值的为false。但是Object-c 里1 为true 并被宏定义为YES,0 为false 并被宏定义为NO。所以,如果读者写下面的代码,则肯定是错误的:
BOOL areIntsDifferent_faulty(int thing1,int thing2)
{
return (thing1-thing2);
}
if(areIntsDifferent_faulty(23,5) == YES)
{
}