预处理

在C语言中预处理命令用来完成程序功能的的说明语句和可执行语句,还可以通过编译预处理命令向编译系统发布信息命令,告诉编译系统在对源程序进行编译之前应该做些什么。
以“#”开头,独占一行,结尾不加分号

宏定义

宏定义作用是用宏名代替一个字符串,宏名由标识符组成,通常采用大写字母来表示。定义宏名之后就可以在源程序中使用宏名来替换字符串。
宏定义有两种:不带参数的宏与带参数的宏
(1)不带参数的宏:定义形式:
#define 宏名 字符串 例:

#include
#define TEST "This is a test!"
int main()
{
  printf("TEST");
  printf("\n");
  printf("TEST");
  #undef TEST       //终止宏定义的作用域用#undef
  return 0;
}

(2)带参数的宏:定义形式:
#define 宏名(参数表) 字符串 例:

#include
#define F(a) a*b
int main()
{
  int x=4,y=5;
  int b,z;
  b=(x-y);
  z=F(x+y);
  printf("b=%d\nF(x+y)=%d\n",b,z);
  return 0;
}

结果为都为-1。因为在计算z是将F(x+y)替换成x+y*b,如果想替换成(x+y)*b则应该改写成#define F(x+y) (a)*b。以避免二义性

文件包含

可在一个源文件中使用#include指令将另一个源文件的全部内容包含进来。在对源程序编译之前用包含文件取代该预处理命令。一般形式为:
#include <包含文件名> 表示包含文件在标准目录中 或
#include “包含文件名” 表示包含文件在指定目录中,不带路径时先在当前目录查找,再到标准目录中查找。

条件编译

当希望部分代码在满足一定条件时进行编译,就需要使用条件编译命令。
(1)#if指令,用于判断是否满足给定条件的编译形式。主要形式有:
#if <表达式>
           语句段1
[#else
           语句段2]
#endif
作用:如果表达式为真则编译语句段1,否则编译语句段2,方括号表示可以默认,不论是否有#else,#endif是必不可少的。另一种形式:
#if <表达式1>
           语句段1
#else  if  <表达式2>
           语句段2
#else
           语句段3
#endif
(2)#ifdef和#ifndef指令:用于判断是否有宏定义的条件编译。
#ifdef的一般形式:
#ifdef 宏名
          语句段
#endif
在此之前已定义这样的宏名,编译该·语句段;
#ifndef的一般形式:
#ifndef 宏名
            语句段
#endif
在此之前没有定义这样的宏名,编译该语句段。

你可能感兴趣的:(C语言,c语言)