gpt4 book ai didi

c - youcompleteme 无法正确完成 sigaction 结构

转载 作者:行者123 更新时间:2023-11-30 20:20:32 28 4
gpt4 key购买 nike

sigaction completion

正如您在上面看到的,youcompleteme无法正确完成sigaction结构,该结构可能具有以下成员(当然我知道sa_restorer元素已过时,不应使用):

sigaction members

那么,我的youcompleteme有什么问题吗?如何使其正常工作?

注意:我真正想问的是,为什么你不能向我展示更多 sigaction 成员,例如 sa_hander,而只是 sa_restorer、sa_mask 和 sa_flags。

最佳答案

仔细阅读signal(7) , signal-safety(7)sigaction(2)sa_restorer已过时,禁止您使用它。

How to make it work correctly?

所以YouCompleteMe正确(而且很聪明!)没有表现出来

(你的问题应该是:“YouCompleteMe 如何足够聪明来隐藏 sa_restorer ?”)

更有趣的问题是为什么它在 sa_restorer 时不显示它显然出现在例如/usr/include/x86_64-linux-gnu/bits/sigaction.h ,但这是一个不同的问题(我不知道它的答案)。如果你完成我特定的标准功能(例如有一些关于它们的配置文件),我不会感到惊讶。顺便说一句YouCompleteMefree softwareopen source所以你可以研究它的源代码

sa_restorer的类型是 __sigrestore_t (请参阅 /usr/include/asm-generic/signal.h )和以下划线开头的标识符保留给实现,不应由用户代码使用,因此 YouCompleteMe 可能会跳过此类字段或数据。这只是一个猜测。请自行检查YouCompleteMe源代码(也许还有它使用的其他工具的代码,例如 libclang )。

What I really want to ask is why can't youcompleteme show me more members of sigaction like sa_handler

在我的 Linux 系统上,sa_handler是一个宏,因为 /usr/include/x86_64-linux-gnu/bits/sigaction.h (内部包含于 <signal.h> )包含:

 # define sa_handler    __sigaction_handler.sa_handler

如果 YouCompleteMe 不费心在完成菜单中显示所有宏,我不会感到惊讶。他们太多了!这(仅是猜测)可能可以解释为什么 sa_handler没有明确建议完成。

(也许如果您输入 siga.sa_ 完成者可能会更明智并建议 sa_handler 但我没有尝试)

您的struct sigaction这只是文档所讲述的内容。实际的实现更为复杂。如果您想了解并改进 YouCompleteMe 的行为,请研究它。 YouCompleteMe提出补丁(通过几周或几个月的时间进行修复)以改善其行为。

YouCompleteMe 上的 future 补丁可能会处理以下划线开头的特定标识符以及使用它们的预处理器宏。这是一个有趣的项目,但可能需要几个月的时间。

关于c - youcompleteme 无法正确完成 sigaction 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46030563/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com