mkcatdefs 命令

用途

预处理消息源文件。

语法

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 命令将新消息源写入文件。 将这个文件用作到 gencat 命令的输入。
  • mkcatdefs 命令输出文件直接管道到 gencat 命令。
  • 使用 runcat 命令而不是 mkcatdefs 命令。 runcat 命令通过 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"
/* The following was generated from symb.src. */
/* definitions for set MSFAC */
#define      SYM_FORM     1
#define      SYM_LEN      2
#define      MSG_H  6
#endif

mkcatdefs 命令还创建symb.src带有分配给符号标识的编号的 gencat 命令的消息目录源文件:

$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 命令。