预处理消息源文件。
mkcatdefs SymbolName SourceFile ... [ -h ]
mkcatdefs 命令预处理输入到 gencat 命令的消息源文件。
SourceFile 消息文件包含符号标识符。 mkcatdefs 命令产生 SymbolName_msg.h 文件,它包含等同于带有由 mkcatdefs 命令指定的集合号和消息 ID 号的符号标识符的语句。
mkcatdefs 命令创建两个输出。第一个是称为 SymbolName_msg.h 的头文件。必须在应用程序中包含这个 SymbolName_msg.h 文件,从而把符号名称与由 mkcatdefs 指定的集合和消息号关联起来。
mkcatdefs 命令用编号将消息源数据发送到到标准输出,而不是用符号标识符。这个输出适合于输入到 gencat 命令。也可以按以下方式使用 mkcatdefs 命令的输出作为到 gencat 命令的输入:
在运行 mkcatdefs 命令之后,可以在应用程序中使用符号名称来引用消息。
-h | 禁止 SymbolName_msg.h 文件的生成。这个标志必须是 mkcatdefs 命令的最后一个参数。 |
要处理 symb.msg 消息源文件并重定向输出到 symb.src 文件,请输入:
mkcatdefs symb symb.msg > symb.src
生成的 symb_msg.h 文件与以下内容相似:
#ifdef _H_SYMB_MSG #define _H_SYMB_MSG #include <limits.h> #include <nl_types.h> #define MF_SYMB "symb.cat" /* 从 symb.src 生成以下内容。 */ /* 设置 MSFAC 的定义 */ #define SYM_FORM 1 #define SYM_LEN 2 #define MSG_H 6 #endif
mkcatdefs 命令也为带有指定到符号标识符的编号的 gencat 命令创建 symb.src 消息编目源文件:
$quote " Use double quotation marks to delimit message text $delset 1 $set 1 1 "Symbolic identifiers can only contain alphanumeric \ characters or the _ (underscore character)\n" 2 "Symbolic identifiers cannot be more than 65 \ characters long\n" 5 "You can mix symbolic identifiers and numbers\n" $quote 6 remember to include the "msg_h" file in your program
因为源文件包含一个特定的编号,所以指定的消息号是不连续的。mkcatdefs 程序始终指定将原来的编号加 1 为符号标识符。
注:mkcatdefs 命令在输出消息源文件中 $set 命令之前插入 $delset 命令。这意味着当输出到 gencat 命令时,不能在现有的的目录中添加、删除或替换单个消息。必须在集合中输入所有的消息。
/usr/bin/mkcatdefs | 包含 mkcatdefs 命令。 |
dspcat 命令、dspmsg 命令、gencat 命令和 runcat 命令。
catclose 子例程、catgets 子例程和 catopen 子例程。
AIX 5L Version 5.2 National Language Support Guide and Reference 中的 Using the Message Facility。