barfs férula en __thread, que es parte de C99
-
01-10-2019 - |
Pregunta
Running férula
matt@stanley:~/cpfs$ splint -paramuse +gnuextensions cpfs.c
Se detiene en esta línea:
__thread int cpfs_errno;
Con un error de análisis:
cpfs.c:127:13: Parse Error: Non-function declaration: __thread : int. (For help on parse errors, see splint -help parseerrors.) *** Cannot continue.
Verificación de la documentación y hacer gárgaras se le ocurre ninguna mención de __thread
. Sin embargo __thread
es parte de la C99 spec , que férula supuestamente soportes (inserto de referencia).
¿Qué está pasando aquí? ¿Cómo puedo obtener una férula para reconocer __thread
?
Solución
Desde el férula FAQ , sólo tiene que añadir -D__thread=
a la línea de comandos férula. Esto tendrá el efecto de eliminar la palabra clave __thread
del código mientras férula se examinaba. Asumo aquí que férula no es especialmente consciente de hilo, y no sería capaz de utilizar la información que se transmite a GCC por la palabra clave.
Otros consejos
__thread
no está en C99. Es una extensión de GNU C - la sección que haya vinculado a está dentro de Extensiones al C Lengua. En él se describe la extensión en términos de cambios en el estándar C99, presumiblemente como preparación para tenerlo adoptada en una futura revisión de la norma.