内容

名称

h2ph - 将 .h C 头文件转换为 .ph Perl 头文件

语法

h2ph [-d 目标目录] [-r | -a] [-l] [-h] [-e] [-D] [-Q] [头文件]

说明

h2ph 将指定的任何 C 头文件转换为相应的 Perl 头文件格式。在 /usr/include 中运行时最容易

cd /usr/include; h2ph * sys/*

cd /usr/include; h2ph * sys/* arpa/* netinet/*

cd /usr/include; h2ph -r -l .

输出文件放置在以 Perl 架构相关库目录为根的层次结构中。您可以使用 -d 开关指定不同的层次结构。

如果在没有参数的情况下运行,则将标准输入过滤到标准输出。

选项

-d 目标目录

将生成的 .ph 文件放在 目标目录 下,而不是放在默认的 Perl 库位置($Config{'installsitearch'})下。

-r

递归运行;如果任何头文件是目录,则在这些目录(及其子目录等)中的所有文件中运行h2ph-r-a互斥。

-a

自动运行;转换头文件,以及它们包含的任何.h文件。此选项将在 C 编译器通常使用的所有目录中搜索.h文件。-a-r互斥。

-l

符号链接将在目标目录中复制。如果未指定-l,则跳过链接。

-h

在 .ph 文件中放置“提示”,这将有助于找到h2ph中的问题。在您需要包含语法错误的.ph文件的情况下,您将看到稍微有用的内容,而不是晦涩的

[ some error condition ] at (eval mmm) line nnn

您将看到稍微有用的内容

[ some error condition ] at filename.ph line nnn

但是,使用-h构建时,.ph文件的大小几乎增加了一倍。

-e

如果在转换过程中遇到错误,则将删除输出文件,并发出警告,而不是立即终止转换。

-D

.h文件中的代码作为注释包含在.ph文件中。这主要用于调试h2ph

-Q

'安静'模式;不要打印正在转换的文件的名称。

环境

不使用环境变量。

文件

/usr/include/*.h
/usr/include/sys/*.h

作者

Larry Wall

另请参阅

perl(1)

诊断

如果无法读取或写入所涉及的文件,则发出通常的警告。

错误

不会为您构建 %sizeof 数组。

它不处理所有 C 构造,但它确实尝试隔离评估中的定义,以便您可以获取它可以转换的定义。

它只被用作一个粗略的工具。您可能需要对生成的文件进行修改。

您必须手动运行此程序;它不会作为 Perl 安装的一部分运行。

不会处理逐段构建的复杂表达式,例如

    enum {
	FIRST_VALUE,
	SECOND_VALUE,
    #ifdef ABC
	THIRD_VALUE
    #endif
    };

不一定能找到 C 编译器内部定义的所有符号。