我听说过一些方法,但没有一个能坚持下来。就我个人而言,我尝试避免 C 中的复杂类型,并尝试将它们分解为组件 typedef。
我现在面临着维护一些来自所谓的“三星级程序员”的遗留代码,并且我很难阅读一些***代码[][]。
如何阅读复杂的 C 声明?
本文解释了相对简单的 7 条规则,如果您发现自己想要或需要手动执行此操作,则可以使用这些规则来阅读任何 C 声明:http://www.ericgiguere.com/articles/reading-c-declarations.html http://www.ericgiguere.com/articles/reading-c-declarations.html
- 找到标识符。这是你的起点。在一张纸上写下“将标识符声明为”。
- 向右看。如果那里什么都没有,或者有一个右括号“)”,则转至步骤4。
-
您现在位于数组(左括号)或函数(左括号)描述符上。可能有一个序列,以不匹配的右括号或声明符结尾(分号或用于初始化的“=”)结束。对于每个这样的描述符,从左到右阅读:
- 如果是空数组“[]”,则写“array of”
- 如果数组有大小,请写“数组大小”
- 如果是函数“()”,则写“函数返回”
在不匹配的括号或声明符末尾处停止,以先到者为准。
- 返回起始位置并向左看。如果那里什么都没有,或者有左括号“(”,则转到步骤6。
- 您现在位于指针描述符“*”上。左边可能有一个序列,以不匹配的左括号“(”或声明符的开头结尾。从右向左读取,对于每个指针描述符写入“指向”。在不匹配的括号处停止或声明符的开始,以先到者为准。
- 此时,您有一个带括号的表达式或完整的声明符。如果您有带括号的表达式,请将其视为新的起点并返回到步骤 2。
- 写下类型说明符。停止。
如果您对某个工具感到满意,那么我同意使用该程序的建议cdecl
: http://gd.tuwien.ac.at/linuxcommand.org/man_pages/cdecl1.html http://gd.tuwien.ac.at/linuxcommand.org/man_pages/cdecl1.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)