黑马程序员--预处理

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

预处理

预处理程序用于在编译器真正地看到代码之前分析源文件。

预处理的功能

1》用等价形式代替连字序列

2》将所有以斜线字符(\)结尾的行连接到同一行

3》将程序划分到某个标记流中

4》删除注释,并将注释替换为单个空格

5》处理预处理程序指令并扩展宏指令

预处理程序指令

所有的预处理程序指令都以字符#开头,它必须是命令所在行的第一个非空白字符。字符#之后可以有选择地跟随一个或多个空白或者制表符

#define指令

格式1:

#define name text

在程序中使用name 时,将会直接代替程序响应位置的text

格式2:

#define IS_LEAP_YEAR(y)   y % 4 == 0 && y & 100 != 0 || y%400 == 0

用于判断是否为闰年

格式3:

#define SQUARE(v)  ((v) * (v))

一定要给变量加上括号

# 和  ##

#define str(x)  #x

str(testing)将扩展为”testing”

#define printint(x) printf(#x “ = %i”,x)

printint(count) ;预处理后为

printf(“count = %i”,count);

#define printx(n) printf(“%i\n”,x##n)

printx(5);预处理后

printf(“%i”,x5);

#和##字符两侧不允许出现空格

#error  text   ….

预处理程序将特定的text编写成一条出错消息

#if指令

格式1:

#if constant_experssion

#endif

格式2:

#if constant_experssion

#elif constant_experssion2

#elif constant_experssion3

#else

#endif

#ifdef指令

#ifdef identifer

#endif

#ifndef指令

#ifndef indentifer

#endif

#import 指令

#import <fileName>

#import “fileName”

自己写的用  ” ”,系统自带的用< >

#include指令用法同#import,但是少了除重功能

#undef指令

#undef identifer

解除identifer的宏定义

#import除重功能实现

原理:

#ifndef debug

//文件内容

#define debug  TRUN

#endif

时间: 2024-11-10 01:30:51

黑马程序员--预处理的相关文章

&lt;&lt;黑马程序员&gt;&gt;预处理指令

预处理命令 ①  宏定义    ②  条件编译    ③  文件包含 宏定义: #define  A  5       不带参数的宏       ①  所有的预处理命令都是以#开头:       ②  预处理命令在程序翻译成0和1之前将程序中的A替换成5:       ③  预处理的作用域是在预处理命令开始的那一行开始,到程序的结尾:       ④  宏名一般用大写或者以看k开头,变量名一般用小写:   #define pingfang(a)  ((a)*(a))       ①  带参数的宏

黑马程序员----预处理指令(宏定义、条件编译、文件包含)

预处理指令共有三种: 宏定义: 条件编译: 文件包含: 一.预处理指令的执行时刻: 在代码翻译成0和1之前 二.预处理指令的特点: 1.预处理指令都是以#号开头: 2.预处理指令的位置可以随便写的: 3.预处理指令的作用域:从编写指令的哪一行代码开始,一直到文件结尾,或者遇到相应的#undef.... 三.宏定义(#define) 1.不带参数的宏定义: 例: #define COUNT 4      //  注意:这里没有分号 ....... #undef COUNT 注意: 1.宏名一般用大

黑马程序员-预处理-枚举-typedef

预处理指令 格式: #define 宏名值 #define COUNT 6 //从该行开始一致到文件结束 1.所有的预处理指令都是以#开头 2.预处理指令分3种 1>宏定义 2>条件编译 3>文件包含 3.预处理指令在代码翻译成0和1之前执行 4.预处理的位置是随便写的 5.预处理指令的作用域:从编写指令的那一行开始,一直到文件结尾,可以用#undef取消宏定义的作用  #undef COUNT 那么后面无法再调用COUNT 6.宏名一般用大写或者以k开头,变量名一般用小写 带参数的宏:

黑马程序员-C学习笔记之预处理指令

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.什么是预处理指令 预处理指令是告诉编译器在编译之前预先处理的一些指令,有宏定义,文件包含,条件编译. 预处理指令一般以 # 号开头,可以出现在文件的任何地方,作用于整个文件. 二.宏定义 宏定义分不带参数的和带参数的宏定义.     1?不带参数的宏定义 #import <stdio.h> #define AGE 10 // 宏名用大写 int ma

【黑马程序员】————预处理指令1-宏定义

预处理指令简介 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译 2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号 3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾.习惯上我们尽可能将预处理指令写在源程序开头,这种情况下,它的作用范围就是整个源程序文件 4.C语言提供的预处理指令主要有:宏

【黑马程序员】————预处理指令2-文件编译

条件编译的概念 在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译. 一.基本用法 1 #if 条件1 2 ...code1... 3 #elif 条件2 4 ...code2... 5 #else 6 ...code3... 7 #endif 1> 如果条件1成立,那么编译器就会把#if 与 #elif之间的code1代码编译进去(注意:是编译进去,不是执行,和平时用的if-else是不一样的)2> 如

黑马程序员_C语言总结-基础部分

C语言基础 1.C语言的关键字 1>关键字就是C语言提供的有特殊含义的符号,也称为保留字,C语言中一共有32个关键字,这些关键字都有自己的含义 例如:int double float if  else switch for 等等 2.标示符的概念: 1>标示符就是在程序中自定义的一些名称,比如函数名,变量名,结构体名等等这些都是标示符 2>命名规则: 1>只能由英文字母的大小写和数字以及_下划线组成,且首字母必须为字母或者下划线_ 2>在C语言中是严格区分大小写的,比如if是

黑马程序员_OC语言前期准备

OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应用程序. 拓展名:c语言-.c  OC语言.-m  兼容C++.-mm 注:其实c语言和oc甚至任何一门语言都只是我们为了实现一些功能,达到一些效果而采用的工具,抛开语法的差别外,我想最重要的应该是在解决问题的时候考虑的角度和方法不一样而已,然而这也构成了学习一门语言的重要性. 二.语法预览 (一)

【黑马程序员】————#include 和 多文件团队开发

一.      #include 1.      预处理指令 2.      #include的作用 纯粹是文件拷贝 3.      #include <stdio.h> stdio.h中有什么?链接的时候做了什么事情 <>和””的区别: 自定义的文件用"",系统自带的文件用<> 4.      #include的路径问题 默认是同路径. 二.      .h文件和.c文件的分工 1.单文件的坏处 1>一个文件的内容太多,不利于阅读.调试 2&

【黑马程序员】————简单的OC程序

一.  OC简介 C语言的基础上,增加了一层最小的面向对象语法 完全兼容C语言 可以在OC代码中混入C语言代码,甚至是C++代码 可以使用OC开发Mac OS X平台和iOS平台的应用程序 二.  OC语法预览 1.      关键字 基本上所有关键字都是以@开头 下面列举一些常见的关键字,看一眼就行了,不用去翻资料查找它们的含义 @interface.@implementation.@end @public.@protected.@private.@selector @try.@catch.@