Go to main content

手册页部分 1:用户命令

退出打印视图

更新时间: 2022年7月27日 星期三
 
 

unifdef(1)

名称

unifdef - 解析和删除 C 程序源中经过 ifdef 的行

用法概要

unifdef [-clt] [-Dname] [-Uname] [-iDname] [-iUname] ... 
     [filename]

描述

unifdef 会在不影响文件的情况下删除文件中经过 ifdef 的行。它足够智能,可以处理嵌套的 ifdef、注释以及 C 语法的单引号和双引号,但不会包括或解释宏。它也不会删除注释,但可以识别并忽略这些注释。您可使用 –D 选项指定希望定义的符号,使用 –U 选项指定不希望定义的符号。那些 ifdef 中的行将复制到输出或根据需要删除。与 filename 相关联的任何 ifdefifndefelseendif 行也将删除。

不会改动包括未指定符号的 ifdef,它将与其相关联的 ifdefelseendif 行一起复制。

如果一个发生的 ifdefX 嵌套于另一个 ifdefX 之内,那么会将内部的 ifdef 视为不可识别的符号。如果同一符号出现在多个参数中,那么仅在第一次出现时有效。

如果未提供 filename 参数,那么 unifdef 会将其输出复制到标准输出,并会从标准输入中提取其输入。

选项

支持以下选项:

–c

正常操作补充。将被删除或留空的行会得到保留,反之亦然。

–l

使用空白行代替“删除的行”。

–t

纯文本选项。unifdef 会禁止尝试识别注释、单引号和双引号。

–Dname

与定义符号 name 相关联的行。

–Uname

与未定义符号 name 相关联的行。

–iDname

忽略但输出与定义符号 name 相关联的行。如果要使用 ifdef 来分隔非 C 行,如构建中的注释或代码,那么您必须为 unifdef 指明将用于该目的的符号,使其不会解析其中的引号和注释。

–iUname

忽略但输出与未定义符号 name 相关联的行。

退出状态

将返回以下退出值:

0

操作成功。

1

操作失败。

属性

有关下列属性的说明,请参见 attributes(7)

属性类型
属性值
可用性
developer/base-developer-utilities

另请参见

diff(1)attributes(7)

诊断

Premature EOF

不正确的 elseendif