其他指令
一、相关知识学习
在ANSI C中除了定义上述常用预编译指令之外,还定义了其他一些预编译指令。
(1) #error
#error命令的主要作用是输出编译错误信息token-sequence,以方便程序员检查程序中出现的错误。
定义格式:#error token-sequence
token-sequence是一个字符序列,当遇到#error命令时,将显示字符序列代表的出错信息。
#error通常与条件编译一起用于检测正常编译过程中不应出现的现象。如果#error被处理,预示着出现一个非常严重的程序错误,大多数编译器会立即终止编译而不再查找其它错误。
(2)#pragma
#pragma命令的作用是触发所定义的动作。
定义格式:# pragma token-sequence
token-sequence是一个字符序列,表示编译器需要执行的命令。如果token-sequence存在,则触发相应的动作,否则忽略。例如,在VisualC++中利用#pragma once防止同一段代码被包含多次。如果#pragma包含无法识别的命令,编译器忽略这些#pragma,并不产生出错信息。
(3) #line
#line命令的作用是改变程序行编号方式,程序行采用类似1、2、3….的数字编号。
定义格式:# line constant
#line命令主要用于强制编译器按指定的行号,对源程序的代码重新编号。#line定义形式有两种,#line constant用来使其后的源代码从指定的行号constant开始重新编号。#line constant “filename”命令需要同时指出行号和文件,#line后面的constant会被认为来自文件filename,行号由constant开始。
在调试程序时,可以以此来规定输出错误代码的准确位置。
(4)#和##运算符
在ANSI C中为预编译指令定义了两个运算符:#和##。运算符#用于实现文本替换;运算符##用于两个标识串连接,如果其中一个标识串是宏参数,连接会在形参被相应的实参替换后发生。


