2、准输出处显示'10'.#define语法:#definemacro-namereplacement-string#define命令用于把指定的字符串替换文件中的宏名称.也就是说,#define使编译器把文件中每一个macro-name替换为replacement-string.替换的字符串结束于行末.这里是一个经典的#define应用(至少是在C中):#defineTRUE1#defineFALSE0...intdone=0;while(done!=TRUE){...}#define命令的另外一个功能就是替换参数,使它假冒创建函数一样使用.如下的代码:#
3、defineabsolute_value(x)(((x)<0)?-(x):(x))...intx=-1;while(absolute_value(x)){...}当使用复杂的宏时,最好使用额外的圆括号.注意在以上的例子中,变量"x"总是出现在它自己的括号中.这样,它就可以在和0比较,或变成负值(乘以-1)前计算值.同样的,整个宏也被括号围绕,以防止和其它代码混淆.如果你不注意的话,你可能会被编译器曲解你的代码.#error语法:#errormessage#error命令可以简单的使编译器在发生错误时停止.当遇到一个#error时,编译器会自动输出行号而无
4、论message的内容.本命令大多是用于调试.#if,#ifdef,#ifndef,#else,#elif,#endif这些命令让编译器进行简单的逻辑控制.当一个文件被编译时,你可以使用这些命令使某些行保留或者是去处.#ifexpression如果表达式(expression)的值是"真"(true),那么紧随该命令的代码将会被编译.#ifdefmacro如果"macro"已经在一个#define声明中定义了,那么紧随该命令的代码将会被编译.#ifndefmacro如果"macro"未在一个#define声明中定义,那么紧随命令的代码将会被编译.一些小边
5、注:命令#elif是"elseif"的一种缩写,并且他可以想你所意愿的一样工作.你也可以在一个#if后插入一个"defined"或者"!defined"以获得更多的功能.这里是一部分例子:#ifdefDEBUGcout<<"Thisisthetestversion,i="<#include"file
6、name"本命令包含一个文件并在当前位置插入.两种语法的主要不同之处是在于,如果filename括在尖括号中,那么编译器不知道如何搜索它.如果它括在引号中,那么编译器可以简单的搜索到文件.两种搜索的方式是由编译器决定的,一般尖括号意味着在标准库目录中搜索,引号就表示在当前目录中搜索.Thespiffynew整洁的新C++#include目录不需要直接映射到filenames,至少对于标准库是这样.这就是你有时能够成功编译以下命令的原因#include#line语法:#lineline_number"filename"#line命令是用
7、于更改__LINE__和__FILE__变量的值.文件名是可选的.__LINE__和__FILE__变量描述被读取的当前文件和行.命令#line10"main.cpp"更改行号为10,当前文件改为"main.cpp".#pragma#pragma命令可以让编程者让编译器执行某些事.因为#pragma命令的执行很特殊,不同的编译器使用有所不同.一个选项可以跟踪程序的执行.#undef#undef命令取消一个先前已定义的宏变量,譬如一个用#define定义的变量.预定义变量语法:__LINE____FILE____DATE____TIME___cpluspl
8、us__STDC__下列参数在不同的编译器可能会有所不同,但是一般是可用的:·_