Linux C 预处理命令

预处理命令

一、宏定义

C语言标准允许在程序中用一个标识符来表示一个字符串,成为宏。标识符为宏名 ,在编译预处理时,将程序中所有的宏名用相应的字符串来替换,这个过程称为宏替换,宏分为两种:无参数的宏和有参数的宏。

1.无参数的宏

无参数宏定义的一般形式为:#define 标识符字符串

“#”代表本行是编译预处理命令。define是宏定义的关键词,标识符是宏名。字符串是宏名所代替的内容,可以是常数、表达式等。

例如:


2.有参数的宏定义

有参数的宏定义类似于有参数的函数,其定义的一般形式为:

#define 标识符(形参表)字符串。

例如:



二、文件包含

文件包含是指是把指定源文件的全部内容包括到当前源程序文件中。

文件包含命令的一般形式为:

#include "文件名"或 #include <文件名>

三、条件编译

条件编译是指在特定的条件下,满足条件和不满足条件的情况分别进行处理——满足条件编译某些语句,不满足条件时编译另一些语句。

条件编译命令有以下几种模式。

模式一:

#ifndef 标识符

程序段1:

#endif

其含义是:如果没有定义标识符,则编译程序段1。

这里的程序段1既可以是语句组,也可以执行命令。

例如:

#ifndef getkey;
#define getkey;
#include<sys\types.h>
#endif;

代码含义是:如果没有定义符号常量getkey,就定义该产量并且包含头文件sys/types.h。

模式二:

#ifndef 标识符

程序段1

#else

程序段2

#endif

其含义是:如果没有定义标识符,就编译程序段1,否则就编译程序段2。

模式三:

#ifdef 标识符

程序段1

#endif

其含义是:如果定义了标识符,就编译程序段1,否则就不编译该程序段。

例如:

#ifdef DEBUG
printf("a=%d,b=%d",a,b);
#endid

在调用程序时,可以在程序头部加入如下语句:

#define DEBUG

模式四:

#ifdef 标识符

程序段

#else

程序段2

#endif

其含义是:如果定义了标识符,就编译程序段1,否则就编译程序段2.

模式五:

#if 表达式

程序段1

#endif

其含义是:如果表达式成立,则编译程序段1,否则不编译程序段。

模式六:

#if 表达式

程序段1

#else 

程序段2

#endif 

其含义是:如果表达式成立,就编译程序段1,否则就编译程序段2。



猜你喜欢

转载自blog.csdn.net/qq706352062/article/details/79715471