__thread上的夹板barf,它是C99的一部分

时间:2010-09-07 03:54:22

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

运行夹板

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

暂停此行:

__thread int cpfs_errno;

解析错误:

cpfs.c:127:13: Parse Error: Non-function declaration: __thread :
               int. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.

检查文档和漱口液时没有提及__thread。但是__thread is part of the C99 spec,据说Splint支持(插入引用)。

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

2 个答案:

答案 0 :(得分:6)

__thread不在C99中。它是GNU C扩展 - 您链接的部分在Extensions to the C Language Family之内。它描述了对C99标准变更的扩展,可能是为了准备在未来的标准修订中采用它。

答案 1 :(得分:3)

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