C 语言预处理命令总结大全

"MAX is bigger than 90"<#else      cout<<"MAX is smaller than 90"<#endif      return0;}

跟在#if后面的表达式在编译时求值,因此它必须仅含常量及已定义过的标识符,不可使用变量。表达式不许含有操作符sizeof(sizeof也是编译时求值)。

#else命令的功能有点象C语言中的else;#else建立另一选择(在#if失败的情况下)。注意,#else属于#if块。

#elif命令意义与ELSE IF 相同,它形成一个if else-if阶梯状语句,可进行多种编译选择。#elif 后跟一个常量表达式。如果表达式为true,则编译其后的代码块,不对其它#elif表达式进行测试。否则,顺序测试下一块。

 12345#if expressionstatement sequence#elif expression1statement sequence#endif

在嵌套的条件编译中#endif、#else或#elif与最近#if或#elif匹配。

 1# ifdef 和# ifndef

条件编译的另一种方法是用#ifdef与#ifndef命令,它们分别表示”如果有定义”及”如果无定义”。# ifdef的一般形式是:

 123# ifdef macronamestatement sequence#endif

#ifdef与#ifndef可以用于#if、#else,#elif语句中,但必须与一个#endif。

 12345678910111213141516#define MAX 91#include using namespacestd; intmain(){#ifdef MAX      cout<<"hello,MAX!"<#else      cout<<"where is MAX?"<#endif#ifndef LEO      cout<<"LEO is not defined"<#endif      return0;}

命令#undef 取消其后那个前面已定义过有宏名定义。一般形式为:

 1#undef macroname

命令#line改变__LINE__与__FILE__的内容,它们是在编译程序中预先定义的标识符。命令的基本形式如下:

 1#line number["filename"]

其中的数字为任何正整数,可选的文件名为任意有效文件标识符。行号为源程序中当前行号,文件名为源文件的名字。命令#line主要用于调试及其它特殊应用。注意:在#line后面的数字标识从下一行开始的数字标识。

 1234#line 100 "jia"      cout<<"#line change line and filename!"<      cout<<__LINE__<      cout<<__FILE__<

五 #pragma

命令#pragma 为实现时定义的命令,它允许向编译程序传送各种指令。