黑马程序员__c语言预编译指令和typedef的使用
来源:互联网 发布:java权限管理设计rbac 编辑:程序博客网 时间:2024/04/28 18:42
------- IOS培训、android培训、期待与您交流! ----------
预处理指令
1预处理指令的使用
预处理指令一般是在文件进行编译之前进行的,在文件未编译成0和1可执行的文件前,程序先对文件中的所有预处理指令进行处理,替换成相应的内容。
预处理指令一般有三种情况:
1>宏定义
2>条件编译
3>文件包含
预处理指令的作用域从定义的哪一行开始,直到文件的结束。预处理指令可以定义在文件的任何位置。想要提前结束预处理指令的作用域,可以使用关键字Undef。所有的预处理指令末尾都不要加分号。
如define COUNT 5 一般预处理指令中的宏名使用一般大写,以区别普通的变量 。或者使用k打头以表示是常量。
带参数的宏定义
#define sum(v1,v2)v1+v2相当于将 左边的sum(v1,v2)替换成v1+v2
但是在同一行中多次使用宏定义时会出现情况如:
sum(2,4)*sum(3,6)被替换成2+4*3+6,为了避免这种情况,我们经常使用(v1+v2)
但是这样使用也不严谨,如下面的情况#define pow(a) (a*a)
当使用如下情况的时候pow(4+4)/pow(3+2)替换成 (4+4*4+4)/(3+2*3+2)为了避免这种情况,可以做如下的修改#define pow(a) ((a)*(a))
宏定义的效率要比函数的执行效率要高,因为函数在运行中调用,需要花一定的时间,而宏定义时在是编译之前将代码进行替换,所以效率要比函数高一点。对于一些简单的运算经常使用宏定义。
条件编译
所谓条件编译就是在我们的代码满足一定的条件才进行编译。
条件编译的格式如下:
#if 条件1
。。。code1。。。。
#elif 条件2
。。。。code2。。。
#else
。。。。code3。。。。
#endif
使用分析情况如if else,但是一定要在结尾加上#endif
#define A 10 #if (A==10) printf("hello everybody\n"); #endif
条件编译的条件判断只能取到宏定义中的值对于那些程序中的变量取不到。
条件编译的形式有三种
#define A#if defined(A)#if !defined(A)#ifdef (A)#ifndef(A)#if A
条件包含
文件包含指令有 #include《》和#include" "两种,《》这种编译器会先从系统函数库中寻找,而“ ”包含文件,编译器会优先从用户自定义的头文件中寻找。文件包含的作用是拷贝include中的内容到定义处。
文件包含使用时要注意不要循环包含,如在一个test.m 中包含math.h,但是不要在math.h中包含test.m这样循环包含。
为了防止重复包含文件,可以通过在头文件中使用
#ifndef HeadFIle_H
#define HeadFIle_H
#endif
typedef的使用
typedef的作用时给类型起一个别名,简化类名。
typedef int MyInt;MyInt a=10;
在typdef的语句的末尾要加上分号。
typedef的使用场合:
1>基本数据类型
2>结构体
3>指针
4>枚举
5>指向函数的指针
typedef和宏定义的区别和使用注意
#define String2 char*typedef char * String;int main(){ String a,b; String2 a2,b2;return 0;}
#define 和typedef都可以为类型名起别名,但是在同时定义两个变量时,这两种就有差别。
- 黑马程序员__c语言预编译指令和typedef的使用
- 黑马程序员__c语言指针
- 黑马程序员__C语言 if基本概念和if注意点
- 黑马程序员---C语言typedef的使用
- 黑马程序员——C语言的关键字 typedef,static,extern和预处理指令
- 黑马程序员__C语言逻辑运算符和三目运算符
- 黑马程序员——c语言复杂数据类型:结构体和枚举,typedef的使用
- 黑马程序员——C语言知识点总结之预处理指令和typedef关键字
- 黑马程序员 C语言 - 09 预处理指令、typedef、extern、static
- 黑马程序员__c#基础1
- 黑马程序员__c#基础2
- 黑马程序员__c#基础3
- 黑马程序员__c#基础4
- 黑马程序员__c#基础5
- 黑马程序员__c#Winform 基础
- C语言预编译指令的用法
- 黑马程序员——C语言日志——typedef的使用以及和#define的区别
- 黑马程序员--ios基础--c语言--预处理指令、typedef、static和extern、递归
- 啊第四范式豆腐干
- Skyline 代码实现画线操作
- expect介绍及使用示例
- log4net 使用与配置 每天一份log文件
- Android 对话框(Dialog)大全 建立你自己的对话框
- 黑马程序员__c语言预编译指令和typedef的使用
- 国际会所占地方很占地方
- 至芯FPGA培训中心-1天FPGA设计集训(赠送FPGA开发板)
- smslib 读不了短信的异常
- sql语句在sql server中查询每个表的记录数,占用的空间,索引占用的空间等
- java:浅谈数组与对象的内存控制
- 7-2 多线程练习-——卖票程序(方法二)
- js live方法
- 编程珠玑笔记第一章