Splint barfs auf __thread, die Teil der C99 ist
-
01-10-2019 - |
Frage
Laufende Schiene
matt@stanley:~/cpfs$ splint -paramuse +gnuextensions cpfs.c
Halt auf dieser Linie:
__thread int cpfs_errno;
Mit einem Parse-Fehler:
cpfs.c:127:13: Parse Error: Non-function declaration: __thread : int. (For help on parse errors, see splint -help parseerrors.) *** Cannot continue.
Überprüfen der Dokumentation und Gurgeln kommt ohne Erwähnung von __thread
auf. Jedoch __thread
ist Teil der C99-Spezifikation , die Stützen Splint angeblich (insert Referenz).
Was ist hier los? Wie kann ich Schiene bekommen __thread
zu erkennen?
Lösung
Von der Schiene FAQ , fügen Sie einfach -D__thread=
auf die Schiene Kommandozeile. Dadurch wird die Wirkung des Entfernens des __thread
Schlüsselwort aus dem Code haben, während Schiene es prüft. Ich gehe davon aus, dass hier Schiene ist nicht besonders Gewinde bewusst, und würde nicht die Informationen nutzen kann, die durch das Schlüsselwort zu GCC befördert wurde.
Andere Tipps
__thread
ist nicht in C99. Es ist eine GNU C-Erweiterung - der Abschnitt, den Sie innerhalb von Erweiterungen der C Sprachfamilie . Es beschreibt die Erweiterung in Bezug auf den Änderungen an den C99-Standard, vermutlich als Vorbereitung es in einer zukünftigen Überarbeitung der Norm angenommen zu haben.