Pregunta

Tengo un código (heredado) que estoy creando con clang por primera vez.El código es algo como:

sprintf(buf, "%s <%s ????>", p1, p2);

Clang da la siguiente advertencia (error con -Werror):

test.c:6:33: error: trigraph converted to '}' character [-Werror,-Wtrigraphs]
    sprintf(buf, "%s <%s ????>", p1, p2);
                           ^

Claramente el ??> no está pensado como un trígrafo, por lo que quiero desactivar los trígrafos por completo (la fuente no los usa intencionalmente en ninguna parte).

Yo he tratado -no-trigraphs pero esa no es realmente una opción:

clang: warning: argument unused during compilation: '-no-trigraphs'

Puedo desactivar la advertencia de trigrafos con -Wno-trigraphs pero no quiero que la conversión del trígrafo se realice en absoluto.

NOTA:Los trígrafos se habilitaron como un efecto secundario no deseado del uso -std=c89.

¿Fue útil?

Solución

Intente usar el modo gnu*: "Los trigrafos están desactivados de forma predeterminada en los modos gnu*;se pueden habilitar con la opción -trigraphs." (ver http://clang.llvm.org/docs/UsersManual.html#c_modes para otras diferencias y cambio de línea de comando)

Otros consejos

No pude ver una forma obvia de desactivar los trígrafos (en lugar de la advertencia de trígrafos).Probablemente la forma más sencilla de corregir este código es cambiarlo a:

sprintf(buf, "%s <%s ????"">", p1, p2);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top