预处理指令与typedef

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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。