8.1 宏定义
宏:C语言标准允许在程序中用一个标识符来表示一个字符串,成为宏。标识符为宏名,在
编译预处理时,将程序中所有的宏名用相应的字符串来替换,这个过程称为宏替换,宏分为两种:
无参数的宏和有参数的宏。
1.无参数宏
无参数宏定义的一般形式为:
#define 标识符字符串
“#”代表本行是编译预处理命令。define是宏定义的关键词,标识符是宏名。字符串是宏名所代替的内容,
可以是常数,表达式等。
// Test.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#define _pi_ 3.1415926*2*2
int _tmain(int argc, _TCHAR* argv[])
{
printf("%f",_pi_);
return 0;
getchar();
}
输出半径为2圆的面积。
2.有参数宏:类似于有参数的函数,一般形式为:
#define 标识符(形参表)字符串
// zz.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#define MAX(x,y)(x>y?x:y)
int _tmain(int argc, _TCHAR* argv[])
{
int a=1,b=2,max;
max=MAX(a,b);
printf("the max between(%d,%d) is %d\n",a,b,max);
return 0;
}
运行结果:the max between(1,2) is 2
8.2 文件包含
文件包含是指把指定文件的全部内容包括到当前源程序文件中。
文件包含命令的一般形式为:
#include "文件名"
或
#include <文件名>
作用:将制定文件包含在当前文件中,插入至文件包含相应位置处。
8.3 条件编译
条件编译:指在特定的条件下,对满足条件和不满足条件的情况分别进行处理——满足
条件时编译某些语句,不满足条件时编译另一些语句。
模式一:
#ifndef 标识符
程序段1
#endif
含义:如果没有定义标识符,则编译程序段1(程序段1可以是语句组,也可以命令行。)
模式二:
#ifndef 标识符
程序段1
#else
程序段2
#endif
含义:如果没有定义标识符,就编译程序段1,否则编译序段2。
模式三:
#ifdef 标识符
程序段1
#endif
含义:如果定义了标识符,就编译程序段1,否则就不编译该程序段。
模式四:
程序段
#else
程序段2
#endif
含义:如果定义了标识符,就编译程序段1,否则编译序
模式五:
#if 表达式
程序段1
#endif
含义:如果表达式成立,就编译程序段1,否则就不编译该程序段。
模式六:
#if 表达式
程序段1
#else
程序段2
#endif
含义:如果表达式成立,就编译程序段1,否则编译序段2