程序周期及预处理

处理过程:预处理、编译、连接

1、预处理:不是C++语句,不加;,必须以#开头

2、编译:先分析后综合,存储分配,目标代码生成

3、连接:不同文件之间重定位处理

预处理命令

{宏定义,文件包含,条件编译}

一、宏定义

用字符文本替换宏名

1、不带参的宏

#define 宏名 字符文本

(1)宏名按标识符取名,一般全大写,字符文本可以是任何(包括关键字)

(2)字符串常量,标识符的一部分不会替换(只是整体的一部分)

(3)同一宏不要定义多次,先取消,再定义,#undef

(4)宏的作用范围:从#define开始,到#undef结束(缺省则到源程序末尾)

(5)通常将宏定义在开头或头文件

(6)宏定义允许嵌套,即在字符文本中可以引用已定义的宏名

2、带参的宏

#define 宏名(参数表) 字符文本

(1)宏名与括号之间无空格,否则理解为不带参

(2)先进行参数替换

二、文件包含

1、<>仅在系统路径查找,调用标准库

2、“”先在项目中查找,再在系统查找,调用自己编写的头文件

3、头文件通常包含:函数申明、全局常量、全局变量、类型申明、宏定义

三、条件编译

1、#define定义条件

2、#ifdef,#ifndef

#define    //先定义,不管有没有值
#ifdef 条件字段
...                //程序代码一
#else
...                    //程序代码二
#endif

//ifndef与ifdef相反

3、#if

#if  常量表达式  //仅能使用define过的表达式
...   //代码段1
#elif
...  //代码段2
#else
...  //代码段3
#endif

4、# ifdef=# if defined  ;  #ifndef=#if !defined  ;

四、其他命令

1、#error:显示信息并且停止编译

2、#pragma once:编译时仅包含(打开)一次

3、#line

时间: 2024-11-09 04:48:31

程序周期及预处理的相关文章

【黑马程序员】————预处理指令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】 02 - 程序结构和预处理

在正式进入C的语法之前,有必要对其整体外观和组成元素作一个浏览.这部分内容对大多数人是比较陌生的,但它们却是C的起点和骨架.而这些内容涉及的背景或细节又可以展开为专门的课题,这里也只是浅尝则止,说明个大概即可. 1. C程序组成 任何一个程序都首先以源文件(source file)的形式存在,它是一个普通的文本文件.C程序一般由一系列后缀为.c和.h的文件组成,前者包含了程序的执行内容,后者包含了各种声明或定义.其实文件名并不重要,这样的后缀名仅是约定俗成的习惯.但建议保持这样的风格,一是为了看

黑马程序员___预处理指令

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.预处理指令指的是在代码翻译成0和1之前执行的操作2.预处理指令都是以#开头的,它的位置可以随便写3.预处理指令的作用域是从编写指令的开始,一直到文件结尾,但是遇到#undef可以取消宏定义的作用 一.宏定义 1.定义:#define kCount 4,宏名一般用大写或者用k开头,变量名一般用小写2.运用场合:如果某个变量使用的频率特别高,我们就可以用宏定义,比如pi,圆周率,这样的好处是可

程序环境和预处理

1.linux环境实践,熟悉使用(网络搜索)ls//list列出当前文件夹的所有文件cd//change directory更改(切换)目录mkdir//make directory创建目录(文件夹)rm//remove删除文件mv//move移动文件touch//创建文件pwd//print work directory打印当前工作目录 3.熟悉预处理标识符:__LINE__     : 文件当前的行号__FILE__     :  进行编辑的源文件__DATE__   : 文件被编辑的日期_

程序结构~编译预处理和宏

/*            #define    #define<名字><值>    注意没有结尾的分号,因为不是C的语句    名字必须是一个单词,值可以是各种东西    在C语言的编译器开始之前,编译预处理程序    (cpp)会把程序中的名字换成值        完全的文本替换 宏    如果一个宏的值中有其他的宏的名字,也会被替换的    如果一个宏的值超过一行,最后一行之前的行末需要加\    红的值后面出现的注释不会被当做宏的值的一部分 *//*        没有值得

《黑马程序员》预处理指令(宏定义、条件编译、文件包含)(C语言)

宏定义的基本概念 ●  预处理指令都是以#开头 ●  预处理指令分为三种 1.宏定义 定义格式:#define  宏名   参数 2.条件编译 #if 条件语句     statement1; #elif 条件语句     statement2; #else     statement3; #endif       //条件编译结束必须加上此条语句,否则statement3以下的所有语句都将默认为不编译 3.文件包含 ●  预处理指令在代码翻译成0和1之前进行 ●  预处理指令的位置是可以写的

ASP.NET应用程序生命周期趣谈(三) HttpModule

在之前的文章中,我们提到过P_Module(HttpModule)这个能干的程序员哥们儿,它通过在项目经理HttpApplication那里得到的授权,插手整个应用程序级别的事件处理.所有的HttpModule都要实现IHttpModule接口,那么我们看IHttpModule的定义: namespace System.Web { public interface IHttpModule { void Dispose(); void Init(HttpApplication context);

Asp.Net高级知识回顾_HttpModule及应用程序生命周期_2

一.HttpModule事件列表 BeginRequest 指示请求处理开始. AuthenticateRequest PostAuthenticateRequest 封装请求身份验证过程. AuthorizeRequest PostAuthorizeRequest 封装请求授权过程. ResolveRequestCache PostResolveRequestCache 封装检查是否能利用以前缓存的输出页面处理请求的过程. PostMapRequestHandler 指示已发现用于处理请求的