Sun Studio 12 Update 1:C++ 用户指南

B.2.5 #pragma dumpmacro s


#pragma dumpmacros (value[,value...])

要查看宏在程序中如何工作时,请使用该 pragma。该 pragma 提供了诸如宏定义、取消定义和用法实例的信息,并按宏的处理顺序将输出打印到标准错误 (stderr)。dumpmacros pragma 达到文件结尾或遇到 #pragma end_dumpmacro 之前一直有效。请参见B.2.6 #pragma end_dumpmacrosvalue 可以是下列参数:

值  

含义  

defs 

打印所有宏定义 

undefs 

打印所有取消定义的宏 

use 

打印关于使用的宏的信息 

loc 

另外打印 defsundefsuse 的位置(路径名和行号)

conds 

打印在条件指令中使用的宏的信息 

sys 

打印系统头文件中所有宏的定义、取消定义和使用的信息 


注 –

子选项 loccondssysdefsundefsuse 选项的限定符。使用 loccondssys 本身并不会生成任何结果。例如,#pragma dumpmacros=loc,conds,sys 不会生成什么结果。


dumpmacros pragma 与命令行选项作用相同,但 pragma 会覆盖命令行选项。请参见A.2.123 -xdumpmacros[= value[,value...]]

dumpmacros pragma 并不嵌套,因此以下代码行中,处理 #pragma end_dumpmacros 时,将停止打印宏信息:


#pragma dumpmacros (defs, undefs)
#pragma dumpmacros (defs, undefs)
...
#pragma end_dumpmacros

dumpmacros pragma 的作用是累积的。以下代码行


#pragma dumpmacros(defs, undefs)
#pragma dumpmacros(loc)

具有和以下行相同的效果


#pragma dumpmacros(defs, undefs, loc)

如果使用选项 #pragma dumpmacros=use,no%loc,则使用的每个宏的名称仅打印一次。如果使用选项 #pragma dumpmacros=use,loc,则每次使用宏时都打印位置和宏名称。