【好程序员笔记分享】——预处理

iOS培训------我的c语言笔记,期待与您交流!

其实在C语言的远行过程中,有这样一个流程,

编译:C----〉可执行文件(可以运行的)

1:.C------.i 预处理(之前和之后还是C语法)
2: .i-------.s 编译(之前是C语法,之后是汇编语法)
3: .s------.o 汇编
4: .o------可执行程序 链接

下面我们就来说说一说第一个步骤预处理阶段:

一:预处理介绍

  1. 预处理:单纯的宏的替换
  2. 宏:发生在预处理阶段的单纯的字符串的替换
  3. C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等

二:预处理中宏的定义无参宏定义
#define M (x+y+3+xy)带参宏定义
#define M(x,y) (x+xy+3+xy)三:宏的使用main(){
  int Num = M;  int Num2 = M(2,5);  printf("%d, %d", Num, Num2);
}这里我们就使用了上面定义的两个宏,也就是实现了预处理命令的使用

四:常用预处理命令

e>预定义的宏(不能用undef取消)
C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。
__DATE__
进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)
__FILE__
代表当前源代码文件名的字符串文字
__LINE__
代表当前源代码中的行号的整数常量
__TIME__
源文件编译时间,格式微“hh:mm:ss”
__func__
当前所在函数名
对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。
下面一个例子是打印上面这些预定义的宏的。

五:预处理总结

  • 1. 预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的。程序员在程序中用预处理命令来调用这些功能。
  • 2. 宏定义是用一个标识符来表示一个字符串,这个字符串可以是常量、变量或表达式。在宏调用中将用该字符串代换宏名。
  • 3. 宏定义可以带有参数,宏调用时是以实参代换形参。而不是“值传送”。
  • 4. 为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。
  • 5. 文件包含是预处理的一个重要功能,它可用来把多个源文件连接成一个源文件进行编译,结果将生成一个目标文件。
  • 6. 条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。
  • 7. 使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。
时间: 2024-10-27 13:11:21

【好程序员笔记分享】——预处理的相关文章

【好程序员笔记分享】——数组与指针

ios培训 ------我的c语言笔记,期待与您交流! 前面我们介绍了关于C语言的内存分配问题,下面我们就开始介绍关于C语言的两个非常重要的知识点:数组与指针 数组与指针其实不仅仅是再C语言中,再OC中(当然OC是内部已经帮我们处理好了,但是还有存在大量的指针),C#中,C++中等待一些开发中都是非常常见的,所以作为一个程序员是必须掌握的. 一.数组:相同类型的集合 1:一维数组 平时我们都是申明一个变量,那么如果变量很多我们要怎么做呢,这个时候我们就能用到数组,那么什么是数组呢? 首先来看一个

【好程序员笔记分享】——动态内存分析

ios培训------我的c语言笔记,期待与您交流! 再C语言中关于内存是一个很重要的知识点,所以今天我就从c语言的内存分配开始为大家解析一下C语言再iOS开发中非常重要的一些知识. 1:malloc函数的介绍 C语言中开辟内存空间:malloc函数 再C语言中malloc原理大致是这样的: malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表.调用malloc函数时,它沿连接表寻找一个大到足以满足用 户请求所需要的内存块.然后,将该内存块一分为二(一块的大小与

【好程序员笔记分享】——动态内存分配

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的c语言笔记,期待与您交流! 再C语言中关于内存是一个很重要的知识点,所以今天我就从c语言的内存分配开始为大家解析一下C语言再iOS开发中非常重要的一些知识. 1:malloc函数的介绍 C语言中开辟内存空间:malloc函数 再C语言中malloc原理大致是这样的: malloc函数的实质体现在,它

【好程序员笔记分享】——纯代码退出键盘

iOS培训------我的c语言笔记,期待与您交流! 关于iOS开发中键盘的退出,其实方法有很多中,而且笔者也也学会了不少,包括各种非纯代码界面的退出. 但是最近开始着手项目的时候却闷了,因为太多了,笔者确实知道有很多中方法能实现,而且令我影响最深的就是 EndEditing,但是因为即有textView,又有TextField而且他们各有不同的方法,虽然笔者现在搞懂了,但是不知道什么时候又不记得 了,而且虽然感觉很简单现在感觉很简单的样子,但是对于没有真正弄清楚的人来说,也是一件痛苦的事情,哈

【好程序员笔记分享】——常用关键字的使用与区别

iOS培训------我的c语言笔记,期待与您交流! copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别 最近在学习iOS的过程个遇到了不少问题,知道概念也看过示例代码,但是就是写不出来或者不知道怎么去用. 一种遇到最多的时候就是在申明一个属性的时候,比如: @property (?, ?) ? *!: 对,就是这里,每次碰到这里的时候,就不知道怎么下手了,虽然看起来

【好程序员笔记分享】——iOS开发之纯代码键盘退出

-iOS培训,iOS学习-------型技术博客.期待与您交流!------------ iOS开发之纯代码键盘退出(非常简单)     iOS开发之纯代码键盘退出 前面说到了好几次关于键盘退出的,但是最近开始着手项目的时候却闷了,因为太多了,笔者确实知道有很多中方法能实现,而且令我影响最深的就是 EndEditing,但是因为即有textView,又有TextField而且他们各有不同的方法,虽然笔者现在搞懂了,但是不知道什么时候又不记得 了,而且虽然感觉很简单现在感觉很简单的样子,但是对于没

【好程序员笔记分享】——Xcode基本操作

iOS培训------我的c语言笔记,期待与您交流! 所谓一个开发者,关于开放上面的技术不懂,哪都不算什么,因为还没有学到那么精通的程度,但是如果一个开发者连自己开发所用的工具都不太熟练,甚至不会操作那么一切都是废话,还是别做这个,回家睡大觉吧. 今天小编就根据自己从开始学习C(ios)到现在这么久遇到了最常用的开发工具的常用操作和一些常用快捷键. 相信看完之后你的编码和开发效率会快很多,不信你可以试试! 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n     新

【好程序员笔记分享】——函数解析

iOS培训——我的c语言笔记,期待与您交流! 关于函数,作为一个开发者事必须掌握的知识不管你在那一个领域,所以今天我就来说一说函数. 一:函数的介绍 关于函数,其实笔者在前面都已经演示不少了,其中用的最多的就是main函数,虽然直接说函数可能不太了解但是,说到main函数,只要你认真看一下main函数的结构,那么你堆函数就大致知道事怎么回事了. 函数:将一些繁琐,反复使用的代码封装在一起,以后你要使用的时候就只要调用这个函数. 其实C程序的全部工作都是由函数完成的,所以C语言也称为函数式语言.

【好程序员笔记分享】——C语言之结构体与枚举

iOS培训——我的c语言笔记,期待与您交流! 一:结构体与枚举的介绍: 结构体与枚举:是一种存储复杂的数据结构体:是用户自定义的一种类型,不同类型的集合,而数组是相同类型变量的集合. 二:结构体的创建 struct user { char username[20]; int score; } 这里两种不同类型的属性的结构体. 创建结构体,就是创建一个类型,计算机并没有分配内存空间. 三:结构体的调用 struct user u1; 这里就是对结构体的调用,这个时候计算机才会为其分配内存空间. u