define的用法:
预处理命令以“#”号开头,如包含命令#include,宏定义命令#define等。一般都放在源文件的前面,它们称为预处理部分。
所谓预处理是指在进行编译之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。
define的最简单的用法:
编译器在处理这个代码之前会对LEN进行处理,替换为10,或许有些人认为这样的定义看起来和const常量很相似,但是他们还是有区别的,#define的定义其实就是简单的文本的替换,并不是作为一个量来使用#define LEN 10
define的函数定义:
这个定义就是两个数中大的那个数,但是它不能在后面加分号,否则会将分号一起替换过去,就会出现编译错误;#define max(a,b) (a>b?a:b)//还可以将括号去掉 a>b?a:b
#if与#endif的用法:
#if 0 code #endif
(1)如果想让code生效,只需把#if 0改成#if 1 ,为1时,表示为真;
(2)#if 1可以让其间的变量成为局部变量;
(3)这个结构表示你先前写好的code,现在用不上了,又不想删除,就用这个方法,比注释方便,在注释的时候可以收缩在一起 看上去美观;
#ifdef的用法:
#ifdef 标识符
程序段1
#else
程序段2
#endif
它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。
他的作用与#ifdef相反,当标识符未定义时,执行程序段1;#ifndef的用法:
#ifdef 标识符
程序段1
#else
程序段2
#endif