Cedet无法正确解析/usr/include下的time.h

发布于 2024-12-25 05:33:35 字数 576 浏览 1 评论 0原文

我配置的 cedet 与 http://alexott.net/en/writings 几乎相同/emacs-devenv/EmacsCedet.html

谢谢alexott,大多数时候它工作得很好,但我发现它不能很好地解析/usr/include/time.h中的tm结构。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void){
    struct tm times;
    FILE file;
}

使用Mx语义-ia-fast-jump时,结构体FILE是正确的,但语义在wchar.h中找到结构体tm,而不是在time.h中。 问题似乎是在 wchar.h 中有一个针对 struct tm 的前向声明。

I configured my cedet almost the same with http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html.

Thanks alexott , most of the time it works well, but I found that it can not well parse the tm struct in /usr/include/time.h.

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(void){
    struct tm times;
    FILE file;
}

When using M-x semantic-ia-fast-jump, the struct FILE is correct, but semantic finds the struct tm in wchar.h, not in time.h.
The problem seems to be there is a forward declaration in wchar.h for the struct tm.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深府石板幽径 2025-01-01 05:33:35

在我的 time.h 副本中,符号 __BEGIN_NAMESPACE_STD 似乎出现在结构声明前面,并且使解析器感到困惑。您只需将其和 __END_NAMESPACE_STD 添加到变量 semantic-lex-c-preprocessor-symbol-map 作为映射到空即可快速解决此问题。然后删除与 time.h 相关的 Semanticdb 缓存文件(在 ~/.semanticdb 中),或者删除 /usr/include 中的所有内容,然后重新启动 emacs。 time.h 应该重新解析,之后 time.h 应该可以正常工作......除非你想使用 std::tm 或其他东西。

In my copy of time.h, it appears that the symbol __BEGIN_NAMESPACE_STD is showing up in front of the struct declaration, and is befuddling the parser. You can fix that quickly by just adding that and __END_NAMESPACE_STD to the variable semantic-lex-c-preprocessor-symbol-map as mapping to empty. Then delete your semanticdb cache files (in ~/.semanticdb) related to time.h, or just everything in /usr/include, and restart emacs. time.h should get reparsed, and things should work ok for time.h after that... unless you want to use std::tm or something.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文