C 基础 (预处理)

原创 2007年10月16日 11:27:00

1.宏替换

#define PI 3.1415926
double area(radius)
double radius;
{
return(PI*radius*radius)
}

由#  开始的命令是C预处理的命令。

#define是宏定义的命令。

#define string_first  string_second

它们是字符串,不能参与计算

宏定义必须写在第一次使用宏定义的代码之前。

宏定义不是以分毫结束的。

string_first  string_second之间至少有一个空格。

string_first 称为宏,string_second称为宏扩展。

宏名使用大写是一个传统习惯。

使用宏的好处:

简化程序的书写,提高程序的可读性,便于程序修改,提高程序的可移植性。

预处理程序将不替换字符串中或用单引号括起来的字符串常量的宏。

简单宏替换:

前面的宏定义可以被后面的引用。

#define PI 3.1415926

#define PISQR PI*PI

带有参数的宏替换。

#define 宏名(参数) 参数表达式

宏名和参数表之间不能有空格。在函数中使用宏名和实参组成的字符序列称之为宏调用。

cpp c文件名字

type 文件名.i

以上的命令是查看替换后的代码。

带有参数的宏调用和函数调用是完全不同的。宏调用是在编译之前完成的,函数调用是在编译之后实现的。

取消宏定义:

#undef 宏名

作用:在这命令后宏不会起作用。

2.文件包含

#include "文件名"---首先在当前目录中寻找文件,如果找不到,在到一系列系统预先设定的目录中去找。

#include <文件名>---直接到系统预先设定的目录中去找。

#include 命令只能指定一个被包含的文件。

#include 可以嵌套,但是不能递归包含。

3.条件编译

希望程序的一部分满足一定的条件才能编译。

条件编译有以下几种形式:

#if 常量表达式

程序段

#endif

作用:如果常量表达式为真,则相应的程序段就被编译。

常量表达式是由宏和常量来构成的。

其它结构和IF一致,只是加了#

 #ifdef 宏名

  程序段

#endif

有那个宏名就编译。

 

 

C语言中如何去理解预处理阶段

C语言如何去理解预处理阶段预处理宏定义( 无参宏定义,带参宏定义)条件编译文件包含预处理操作符号和预定义宏下面将会依次的去介绍各个阶段中的一些细节性东西预处理首先在C语言编译的时候,会经历以下几个步骤...
  • qq_29924041
  • qq_29924041
  • 2017-02-08 23:32:55
  • 1861

浅谈c语言预处理知识

预处理是C语言的一个重要功能,由预处理程序负责完成。合理地使用这些预处理功能,将有利于程序的阅读、修改、调试和移植,也有利于程序的模块化设计。 c语言中提供的预处理功能包括宏定义、文件包含以及条件编...
  • MyLinChi
  • MyLinChi
  • 2016-10-31 20:47:50
  • 1157

关于C文件预处理的理解

本文主要介绍: 1.预定义符号 2.宏和函数的区别 3.理解编译链接的整个过程和详细的每个过程 1.预定义符号 这些符号的值可以给我们提供一些编译C程序文件时的信息,给我们调试或创建日志文件提供便...
  • haitang_yue
  • haitang_yue
  • 2016-10-17 17:01:42
  • 758

C语言的本质(20)——预处理之二:条件预处理和包含头文件

我们可以通过定义不同的宏来决定编译程序对哪些代码进行处理。条件编译指令将决定那些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。条件编译可分为三种情况,按照...
  • yincheng01
  • yincheng01
  • 2014-07-17 15:36:08
  • 1412

SQlite数据库的C编程接口(三) 预处理语句(Prepared Statements)

SQlite3数据库连接完成之后,就可以执行SQL命令了。下面将要介绍的prepare和step函数都是用来操作和执行SQL命令的。   典型的函数操作流程(伪代码): [cpp]...
  • tuluigi
  • tuluigi
  • 2013-04-28 17:58:39
  • 871

C语言三种预处理功能

1. 宏定义 2. 文件包含 3. 条件编译 伪指令(或预处理指令)定义: 预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存...
  • u012050154
  • u012050154
  • 2016-06-15 15:37:57
  • 8720

C语言入门(十六)预处理过程

预处理过程  前言: 预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。 在C语言中,并没有任何内在的机制来完成如下一些功能:在...
  • caihongdao123
  • caihongdao123
  • 2016-07-12 14:16:56
  • 7040

C基础——预处理

1.预处理指令:   定义:1>预处理指令是指将代码翻译成0和1之前执行的指令。         2>全部是#开头,预处理指令位置可以随便写。   分类: 宏...
  • whbsspu
  • whbsspu
  • 2014-11-14 15:02:11
  • 254

Linux C 预处理详解

1.预处理程序 按照ANSI标准的定义,预处理程序应该处理以下指令: #if #ifdef #ifndef #else #elif #endif #define #undef #line #error...
  • zqixiao_09
  • zqixiao_09
  • 2015-12-23 13:07:08
  • 1503

C++封装MySQL预处理C API

#ifndef _PRE_STATEMENT_H_ #define _PRE_STATEMENT_H_ #include "mysql.h" #include class pre_stateme...
  • peng314899581
  • peng314899581
  • 2016-08-04 14:00:19
  • 1343
收藏助手
不良信息举报
您举报文章:C 基础 (预处理)
举报原因:
原因补充:

(最多只允许输入30个字)