【问题标题】:Splint barfs on __thread, which is part of C99__thread 上的夹板 barfs,它是 C99 的一部分
【发布时间】:2010-09-07 03:54:22
【问题描述】:

跑步夹板

matt@stanley:~/cpfs$ splint -paramuse +gnuextensions cpfs.c

在这一行暂停:

__thread int cpfs_errno;

出现解析错误:

cpfs.c:127:13:解析错误:非函数声明:__thread: 诠释。 (有关解析错误的帮助,请参阅 splint -help parseerrors。) *** 无法继续。

检查文档和漱口水没有提到__thread。然而,据称 Splint 支持的 __thread is part of the C99 spec(插入参考)。

这里发生了什么?如何让夹板识别__thread

【问题讨论】:

标签: c linux gcc splint thread-local-storage


【解决方案1】:

__thread 不在 C99 中。它是一个 GNU C 扩展 - 您链接到的部分在 Extensions to the C Language Family 内。它描述了对 C99 标准的更改的扩展,大概是为在未来的标准修订中采用它做准备。

【讨论】:

  • 我不确定“__thread”不是 c99 的一部分。这里的其他 cmets 说是。令人沮丧的是,我看到的唯一证据来自 gcc 文档:gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/… -- 任何人都可以检查真正的标准。
  • @Adrian Ratnapala:thread__thread 这个词都没有出现在 C99 标准的任何地方。您可以download a copy of N1256,这是一个委员会工作草案,仅包含应用了 TC1、TC2 和 TC3 的最终 C99 文本。
【解决方案2】:

splint FAQ,只需将-D__thread= 添加到夹板命令行。这将具有在夹板检查代码时从代码中删除__thread 关键字的效果。我在这里假设夹板不是特别了解线程,并且无法使用通过关键字传达给 GCC 的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2015-11-21
    • 2012-07-05
    • 2014-01-03
    相关资源
    最近更新 更多