|
__LINE__
|
当前行号。
|
|
__DATE__
|
源文件的转化日期。
|
|
__TIME__
|
源文件的转化时间。
|
|
__STDC__
|
指示一个一致的实现。
|
|
__FILE__
|
当前文件名。
|
|
__STR__
|
指出编译器将为某些字符串函数(在 /usr/include/string.h 中定义)生成直接插入的代码。
|
|
__MATH__
|
指出编译器将为某些数学函数(在 /usr/include/math.h 中定义)生成直接插入的代码。
|
|
__ANSI__
|
指出 langlvl 被设定等于 ANSI。
|
|
__SAA__
|
指出 langlvl 被设定等于 SAA。
|
|
__SAA_L2__
|
指出 langlvl 被设定等于 SAAL2。
|
|
__EXTENDED__
|
指出 langlvl 被设定等于 extended。
|
|
__TIMESTAMP__
|
指出源文件最近修改的日期和时间。
|
|
#define
Name
TokenString
|
用 TokenString 取代随后的 Name 实例。
|
|
#define
Name
(
Argument,...,Argument
)
TokenString
|
把随后的 Name(Argument, . . . ,Argument)序列的实例用 TokenString 取代,这里 Argument 在 TokenString 中的每次出现都被逗号分隔的列表中相应的记号取代。注意,Name 和左括号之间不能有任何空格。
|
|
#undef
Name
|
从这点开始忽略任何 Name 定义。
|
|
#include "
File
"
or #include <File>
|
在这点包含 File 的内容,这个文件将被 cpp 处理。
如果您给 File 加上 " " (双引号), cpp 命令首先在 InFile 目录中搜索,然后在以 -I 标志指定的目录中搜索,最后在一个标准列表上搜索。
如果您使用 <File> 符号表示法,cpp 命令只在标准目录中搜索 File。它不搜索 InFile 驻留的目录。
|
|
#line
Number
["File"]
|
使得实现表现得好像接下去的源行序列以具有用 Number 定义的行号的源行开始。如果提供 File,则假定的文件名被改为 File。
|
|
#error
TokenString
|
产生一个包含 TokenString 的诊断消息。
|
|
#pragma
TokenString
|
编译器的已定义实现的指令。
|
|
#endif
|
结束以一个测试伪指令(#if 、 #ifdef 或 #ifndef)开始的行部分。每个测试伪指令都必须有一个相匹配的 #endif。
|
|
#ifdef
Name
|
把随后的行放到输出中,仅当:
Name
已经由先前的 #define定义
或者
Name
已经由 -D 标志定义,
或者
Name
是一个 cpp 命令可识别的特殊名字,
并且
Name
还没有被一个插入的 #undef 取消定义,
或者
Name
还没有被 -U 标志取消定义。
|
|
#ifndef
Name
|
把随后的行放到输出中,仅当:
Name
从没有被先前的 #define 定义,
并且
Name
不是一个 cpp 命令可识别的特殊名字,
或者
Name
已经被先前的一个 #define 定义,但是它已经被一个插入的 #undef 取消定义,
或者
Name
是一个 cpp 命令可识别的特殊名字,但是它已经被 -U 标志取消定义。
|
|
#if
Expression
|
把随后的行放到输出中,仅当 Expression 求值不是零。所有的二进制未分配 C 运算符, ?: 运算符,和一元运算符 -、!、和 -,在 Expression 中都是合法的。运算符的优先顺序和 C 语言中定义的相同。还有一个一元运算符 defined,它可以在 Expression 中以两种形式使用:
defined
(Name)或 defined Name
这允许 #ifdef 和 #ifndef 在一个 #if 伪指令中使用。只有这些被 cpp 所知的运算符、整型常量和名字可以在 Expression 中使用。 sizeof 运算符不可用。
|
|
#elif
Expression
|
把随后的行放到输出中,只要前面的 #if 或 #elif 伪指令中的表达式求值为 false 或未定义,并且这个 Expression 求值为 true。
|
|
#else
|
把随后的行放到输出中,只要前面的 #if 或 #elif 伪指令中的表达式求值为 false 或未定义(因此在 #if 之后,在 #else 之前的行都被忽略)。
每个测试伪指令条件都被依次检查。如果它求值为 false (0),它控制的分组被跳过。只通过确定伪指令的名字来处理伪指令以便于跟踪嵌套条件的层次;组中有其它的预处理记号,伪指令的其余预处理记号被忽略。只有控制条件为 true(非零)的第一组被处理。如果没有一个控制条件计算为 true,并且有 #else 伪指令,则由 #else 控制的那组被处理;缺少一个 #else 伪指令,到#endif 为止所有的组都被跳过。
|
|
-C
|
从源文件拷贝 C 语言注释到输出文件。如果您省略了这个标志,cpp 命令除去除了 cpp 伪指令行中的所有 C 语言注释。
|
|
-D
Name
[=Definition]
|
如同在一个 #define 伪指令中那样定义 Name。Definition 的缺省值是 1。
|
|
-I
Directory
|
首先查找 Directory ,再查找针对#include 文件的标准列表上的目录中不是以一个 / (正斜杠)开始的名字。参见先前的关于 #include 的讨论。
|
|
-P
|
预处理输入而不为 C 编译器的下一趟执行产生行控制信息。
|
|
-q
DBCS
|
指定双字节字符集方式。
|
|
-U
Name
|
除去所有 Name 的初始定义,这里 Name 是一个预处理器预定义的一个符号(除了四个预处理器方式指示符: __ANSI__、__EXTENDED__、 __SAA__ 和 __SAA_L2__)。在 ANSI 方式中不识别这个标志。
|
|
-qlanglvl=
Language
|
为处理选择一个语言级别。Language 可以是 ANSI 、SAA 、SAAL2 或扩展。缺省是扩展。
注:
当 Language 是扩展时, _NO_PROTO 不被自动定义。可以使用 -D 选项完成这些定义,这个选项在 /etc/xlc.cfg 文件中。
|
689



被折叠的 条评论
为什么被折叠?



