qsphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget/doc-guide/parse-headersmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/zh_TW/doc-guide/parse-headersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/it_IT/doc-guide/parse-headersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ja_JP/doc-guide/parse-headersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/ko_KR/doc-guide/parse-headersmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget+/translations/sp_SP/doc-guide/parse-headersmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhX/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/doc-guide/parse-headers.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h*Documentation/doc-guide/parse-headers.rst h]h)}(h)Documentation/doc-guide/parse-headers.rsth]h)Documentation/doc-guide/parse-headers.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h译者h]h译者}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h*吴想成 Wu XiangCheng h]h)}(h)吴想成 Wu XiangCheng h](h吴想成 Wu XiangCheng <}(hj hhhNhNubh reference)}(hbobwxc@email.cnh]hbobwxc@email.cn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bobwxc@email.cnuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(h包含用户空间API头文件h]h包含用户空间API头文件}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjXhhhhhK ubh)}(hX?有时,为了描述用户空间API并在代码和文档之间生成交叉引用,需要包含头文件和示例 C代码。为用户空间API文件添加交叉引用还有一个好处:如果在文档中找不到相应符号, Sphinx将生成警告。这有助于保持用户空间API文档与内核更改同步。 :ref:`parse_headers.pl ` 提供了生成此类交叉引用的一种方法。 在构建文档时,必须通过Makefile调用它。有关如何在内核树中使用它的示例,请参阅 ``Documentation/userspace-api/media/Makefile`` 。h](hX?有时,为了描述用户空间API并在代码和文档之间生成交叉引用,需要包含头文件和示例 C代码。为用户空间API文件添加交叉引用还有一个好处:如果在文档中找不到相应符号, Sphinx将生成警告。这有助于保持用户空间API文档与内核更改同步。 }(hjkhhhNhNubh)}(h*:ref:`parse_headers.pl `h]hinline)}(hjuh]hparse_headers.pl}(hjyhhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1jwhjsubah}(h]h ]h"]h$]h&]refdoc*translations/zh_CN/doc-guide/parse-headers refdomainjreftyperef refexplicitrefwarn reftargetparse_headers_zhuh1hhhhK hjkubh 提供了生成此类交叉引用的一种方法。 在构建文档时,必须通过Makefile调用它。有关如何在内核树中使用它的示例,请参阅 }(hjkhhhNhNubhliteral)}(h.``Documentation/userspace-api/media/Makefile``h]h*Documentation/userspace-api/media/Makefile}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubh 。}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjXhhubhtarget)}(h.. _parse_headers_zh:h]h}(h]h ]h"]h$]h&]refidparse-headers-zhuh1jhKhjXhhhhubjW)}(hhh](j\)}(hparse_headers.plh]hparse_headers.pl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubjW)}(hhh](j\)}(h 脚本名称h]h 脚本名称}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubh)}(h~parse_headers.pl——解析一个C文件,识别函数、结构体、枚举、定义并对Sphinx文档 创建交叉引用。h]h~parse_headers.pl——解析一个C文件,识别函数、结构体、枚举、定义并对Sphinx文档 创建交叉引用。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id1ah ]h"] 脚本名称ah$]h&]uh1jVhjhhhhhKubjW)}(hhh](j\)}(h 用法概要h]h 用法概要}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhK"ubh)}(hM\ **parse_headers.pl**\ [<选项>] <输出文件> [<例外文件>]h](h }(hj hhhNhNubhstrong)}(h**parse_headers.pl**h]hparse_headers.pl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh7 [<选项>] <输出文件> [<例外文件>]}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK%hjhhubh)}(h5<选项> 可以是: --debug, --help 或 --usage 。h]h5<选项> 可以是: --debug, --help 或 --usage 。}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK'hjhhubeh}(h]id2ah ]h"] 用法概要ah$]h&]uh1jVhjhhhhhK"ubjW)}(hhh](j\)}(h选项h]h选项}(hjHhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjEhhhhhK+ubh)}(h\ **--debug**\h](h }(hjVhhhNhNubj)}(h **--debug**h]h--debug}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjVubh}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK/hjEhhubh block_quote)}(h5开启脚本详细模式,在调试时很有用。 h]h)}(h3开启脚本详细模式,在调试时很有用。h]h3开启脚本详细模式,在调试时很有用。}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hjxubah}(h]h ]h"]h$]h&]uh1jvhhhK1hjEhhubh)}(h\ **--usage**\h](h }(hjhhhNhNubj)}(h **--usage**h]h--usage}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK4hjEhhubjw)}(h*打印简短的帮助信息并退出。 h]h)}(h'打印简短的帮助信息并退出。h]h'打印简短的帮助信息并退出。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK6hjubah}(h]h ]h"]h$]h&]uh1jvhhhK6hjEhhubh)}(h \ **--help**\h](h }(hjhhhNhNubj)}(h **--help**h]h--help}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK:hjEhhubjw)}(h,打印更详细的帮助信息并退出。 h]h)}(h*打印更详细的帮助信息并退出。h]h*打印更详细的帮助信息并退出。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)中为描述API的文档编写的带交叉引用的 ..预格式化 文本 块将文件转换成重构文本(RST)。它接受一个可选的<例外文件>,其中描述了 哪些元素将被忽略或指向非默认引用。h]hX通过C头文件或源文件()中为描述API的文档编写的带交叉引用的 ..预格式化 文本 块将文件转换成重构文本(RST)。它接受一个可选的<例外文件>,其中描述了 哪些元素将被忽略或指向非默认引用。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKBhjhhubh)}(h#输出被写入到<输出文件>。h]h#输出被写入到<输出文件>。}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKFhjhhubh)}(h它能够识别定义、函数、结构体、typedef、枚举和枚举符号,并为它们创建交叉引用。 它还能够区分用于指定Linux ioctl的 ``#define`` 。h](h它能够识别定义、函数、结构体、typedef、枚举和枚举符号,并为它们创建交叉引用。 它还能够区分用于指定Linux ioctl的 }(hj5hhhNhNubj)}(h ``#define``h]h#define}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj5ubh 。}(hj5hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKHhjhhubh)}(hQ<例外文件> 包含两种类型的语句: \ **ignore**\ 或 \ **replace**\ .h](h0<例外文件> 包含两种类型的语句: }(hjUhhhNhNubj)}(h **ignore**h]hignore}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh 或 }(hjUhhhNhNubj)}(h **replace**h]hreplace}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubh .}(hjUhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKKhjhhubh)}(hignore标记的语法为:h]hignore标记的语法为:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjhhubh)}(hignore \ **type**\ \ **name**\h](h ignore }(hjhhhNhNubj)}(h**type**h]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj)}(h**name**h]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKPhjhhubh)}(hjThe \ **ignore**\ 意味着它不会为类型为 \ **type**\ 的 \ **name**\ 符号生成 交叉引用。h](hThe }(hjhhhNhNubj)}(h **ignore**h]hignore}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh$ 意味着它不会为类型为 }(hjhhhNhNubj)}(h**type**h]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 的 }(hjhhhNhNubj)}(h**name**h]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 符号生成 交叉引用。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKRhjhhubh)}(hreplace标记的语法为:h]hreplace标记的语法为:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKVhjhhubh)}(h2replace \ **type**\ \ **name**\ \ **new_value**\h](h replace }(hjhhhNhNubj)}(h**type**h]htype}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubj)}(h**name**h]hname}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }hjsbj)}(h **new_value**h]h new_value}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKYhjhhubh)}(hThe \ **replace**\ 味着它将为 \ **type**\ 类型的 \ **name**\ 符号生成交叉引 用,但是它将使用 \ **new_value**\ 来取代默认的替换规则。h](hThe }(hj]hhhNhNubj)}(h **replace**h]hreplace}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh 味着它将为 }(hj]hhhNhNubj)}(h**type**h]htype}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh 类型的 }(hj]hhhNhNubj)}(h**name**h]hname}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh3 符号生成交叉引 用,但是它将使用 }(hj]hhhNhNubj)}(h **new_value**h]h new_value}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj]ubh# 来取代默认的替换规则。}(hj]hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK[hjhhubh)}(h=这两种语句中, \ **type**\ 可以是以下任一项:h](h这两种语句中, }(hjhhhNhNubj)}(h**type**h]htype}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh 可以是以下任一项:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK_hjhhubh)}(h \ **ioctl**\h](h }(hjhhhNhNubj)}(h **ioctl**h]hioctl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKbhjhhubjw)}(hignore 或 replace 语句应用于ioctl定义,如: #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register) h](h)}(h6ignore 或 replace 语句应用于ioctl定义,如:h]h6ignore 或 replace 语句应用于ioctl定义,如:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdhjubh)}(hO#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)h]hS#define VIDIOC_DBG_S_REGISTER _IOW(‘V’, 79, struct v4l2_dbg_register)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjubeh}(h]h ]h"]h$]h&]uh1jvhhhKdhjhhubh)}(h \ **define**\h](h }(hjhhhNhNubj)}(h **define**h]hdefine}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKjhjhhubjw)}(hYignore 或 replace 语句应用于在中找到的任何其他 ``#define`` 。 h]h)}(hVignore 或 replace 语句应用于在中找到的任何其他 ``#define`` 。h](hGignore 或 replace 语句应用于在中找到的任何其他 }(hj=hhhNhNubj)}(h ``#define``h]h#define}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh 。}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKlhj9ubah}(h]h ]h"]h$]h&]uh1jvhhhKlhjhhubh)}(h\ **typedef**\h](h }(hjchhhNhNubj)}(h **typedef**h]htypedef}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjcubh}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKphjhhubjw)}(hDignore 和 replace 语句应用于中的typedef语句。 h]h)}(hAignore 和 replace 语句应用于中的typedef语句。h]hAignore 和 replace 语句应用于中的typedef语句。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKrhjubah}(h]h ]h"]h$]h&]uh1jvhhhKrhjhhubh)}(h \ **struct**\h](h }(hjhhhNhNubj)}(h **struct**h]hstruct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKvhjhhubjw)}(hLignore 和 replace 语句应用于中的结构体名称语句。 h]h)}(hIignore 和 replace 语句应用于中的结构体名称语句。h]hIignore 和 replace 语句应用于中的结构体名称语句。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhjubah}(h]h ]h"]h$]h&]uh1jvhhhKxhjhhubh)}(h \ **enum**\h](h }(hjhhhNhNubj)}(h**enum**h]henum}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK|hjhhubjw)}(hIignore 和 replace 语句应用于中的枚举名称语句。 h]h)}(hFignore 和 replace 语句应用于中的枚举名称语句。h]hFignore 和 replace 语句应用于中的枚举名称语句。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK~hjubah}(h]h ]h"]h$]h&]uh1jvhhhK~hjhhubh)}(h \ **symbol**\h](h }(hj hhhNhNubj)}(h **symbol**h]hsymbol}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubh}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubjw)}(hXSignore 和 replace 语句应用于中的枚举值名称语句。 replace语句中, \ **new_value**\ 会自动使用 \ **typedef**\ , \ **enum**\ 和 \ **struct**\ 类型的 :c:type: 引用;以及 \ **ioctl**\ , \ **define**\ 和 \ **symbol**\ 类型的 :ref: 。引用的类型也可以在replace语句中显式定义。 h](h)}(hIignore 和 replace 语句应用于中的枚举值名称语句。h]hIignore 和 replace 语句应用于中的枚举值名称语句。}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj+ubh)}(hXreplace语句中, \ **new_value**\ 会自动使用 \ **typedef**\ , \ **enum**\ 和 \ **struct**\ 类型的 :c:type: 引用;以及 \ **ioctl**\ , \ **define**\ 和 \ **symbol**\ 类型的 :ref: 。引用的类型也可以在replace语句中显式定义。h](hreplace语句中, }(hj=hhhNhNubj)}(h **new_value**h]h new_value}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh 会自动使用 }(hj=hhhNhNubj)}(h **typedef**h]htypedef}(hjWhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh , }(hj=hhhNhNubj)}(h**enum**h]henum}(hjihhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh 和 }(hj=hhhNhNubj)}(h **struct**h]hstruct}(hj{hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh' 类型的 :c:type: 引用;以及 }(hj=hhhNhNubj)}(h **ioctl**h]hioctl}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh , }hj=sbj)}(h **define**h]hdefine}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubh 和 }(hj=hhhNhNubj)}(h **symbol**h]hsymbol}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubhP 类型的 :ref: 。引用的类型也可以在replace语句中显式定义。}(hj=hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj+ubeh}(h]h ]h"]h$]h&]uh1jvhhhKhjhhubeh}(h]id4ah ]h"]说明ah$]h&]uh1jVhjhhhhhK@ubjW)}(hhh](j\)}(h示例h]h示例}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubh)}(hignore define _VIDEODEV2_Hh]hignore define _VIDEODEV2_H}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h.忽略中的 #define _VIDEODEV2_H 。h]h.忽略中的 #define _VIDEODEV2_H 。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hignore symbol PRIVATEh]hignore symbol PRIVATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h如下结构体:h]h如下结构体:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h!enum foo { BAR1, BAR2, PRIVATE };h]h!enum foo { BAR1, BAR2, PRIVATE };}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h.不会为 \ **PRIVATE**\ 生成交叉引用。h](h 不会为 }(hj.hhhNhNubj)}(h **PRIVATE**h]hPRIVATE}(hj6hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubh 生成交叉引用。}(hj.hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hGreplace symbol BAR1 :c:type:\`foo\` replace symbol BAR2 :c:type:\`foo\`h]hGreplace symbol BAR1 :c:type:`foo` replace symbol BAR2 :c:type:`foo`}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h如下结构体:h]h如下结构体:}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h!enum foo { BAR1, BAR2, PRIVATE };h]h!enum foo { BAR1, BAR2, PRIVATE };}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hB它会让BAR1和BAR2枚举符号交叉引用C域中的foo符号。h]hB它会让BAR1和BAR2枚举符号交叉引用C域中的foo符号。}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id5ah ]h"]示例ah$]h&]uh1jVhjhhhhhKubjW)}(hhh](j\)}(h缺陷h]h缺陷}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubh)}(hE请向Mauro Carvalho Chehab 报告有关缺陷。h](h请向Mauro Carvalho Chehab <}(hjhhhNhNubj))}(hmchehab@kernel.orgh]hmchehab@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurimailto:mchehab@kernel.orguh1j(hjubh>报告有关缺陷。}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h0中文翻译问题请找中文翻译维护者。h]h0中文翻译问题请找中文翻译维护者。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id6ah ]h"]缺陷ah$]h&]uh1jVhjhhhhhKubjW)}(hhh](j\)}(h版权h]h版权}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubh)}(hH版权所有 (c) 2016 Mauro Carvalho Chehab h](h-版权所有 (c) 2016 Mauro Carvalho Chehab <}(hjhhhNhNubj))}(hmchehab+samsung@kernel.orgh]hmchehab+samsung@kernel.org}(hjhhhNhNubah}(h]h ]h"]h$]h&]refuri!mailto:mchehab+samsung@kernel.orguh1j(hjubh>}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hG许可证 GPLv2:GNU GPL version 2 h](h%许可证 GPLv2:GNU GPL version 2 <}(hj hhhNhNubj))}(h!https://gnu.org/licenses/gpl.htmlh]h!https://gnu.org/licenses/gpl.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(h}这是自由软件:你可以自由地修改和重新发布它。 在法律允许的范围内,**不提供任何保证**。h](ha这是自由软件:你可以自由地修改和重新发布它。 在法律允许的范围内,}(hj+hhhNhNubj)}(h**不提供任何保证**h]h不提供任何保证}(hj3hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubh。}(hj+hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]id7ah ]h"]版权ah$]h&]uh1jVhjhhhhhKubeh}(h](parse-headers-pljeh ]h"](parse_headers.plparse_headers_zheh$]h&]uh1jVhjXhhhhhKexpect_referenced_by_name}jYjsexpect_referenced_by_id}jjsubeh}(h]apiah ]h"]包含用户空间api头文件ah$]h&]uh1jVhhhhhhhK ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j[N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}j]jasnameids}(jejbjYjjXjUjjjBj?jjjjjjjjjPjMu nametypes}(jejYjXjjBjjjjjPuh}(jbjXjjjUjjjj?jjjEjjjjjjjMju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages]hsystem_message)}(hhh]h)}(hhh]h6Hyperlink target "parse-headers-zh" is not referenced.}hjsbah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]levelKtypeINFOsourcehlineKuh1juba transformerN include_log]