1.预处理指令
- 什么是预处理指令:
- 在我们的文件翻译成0和1之前做的操作我们称之为预处理指令
- 一般情况预处理指令都是以#号开头的
常用预处理指令
1.宏定义
2.条件编译
3.文件包含
- 常用的条件编译宏以及使用
//根据运行的环境选择执行相应的代码
#if DEBUG == 0
char *name = "lnj";
char *pwd = "123";
#else
char *name = NULL;
char *pwd = NULL;
#endif
// 判断是否定义了后面的宏
#ifdef SCORE
printf("score\n");
#elif COUNT
printf("count\n");
#else
printf("OTHER\n");
#endif
// 是不是没有定义名称叫做SCORE的宏
#ifndef SCORE
printf("no score\n");
#else
printf("score\n");
#endif
2.typedef
- 作用:typedef可以给一个已知的数据类型起别名 (外号)
- typedef不仅能给系统原有的数据类型起别名, 也可以给一个自定义的数据类型起别名
- 利用typedef给数据类型起别名, 并不会生成一个新的数据类型, 仅仅是给原有的类型起了一个别名而已
//给基本数据类型起别名
typedef int Integer;
//给结构体类型起别名
typedef struct Person
{
int age;
double height;
char *name;
} SPerson;
//定义枚举类型的同时给枚举类型起别名, 并且省略枚举原有类型名称
typedef enum
{
kGenderMale,
kGenderFemale
} SEX;
// 注意: 如果是给指向函数的指针起别名, 那么指向函数的指针的指针名称就是它的别名
// typedef id (*IMP)(id, SEL, ...); oc中的IMP类型,就是一个指向方法实现的指针
typedef int(*functionPotinter)(int , int);
int sum(int v1, int v2)
{
return v1 + v2;
}
int main(int argc, const char * argv[]) {
Integer age = 30;
SPerson sp;
SEX sex;
sex = kGenderMale;
functionPotinter func = sum;
int a = func(5,8);
return 0;
}
网友评论