Pregunta

Cuando intento precompilar un archivo *.pc que contiene una directiva #warning, recibo el siguiente error:

PCC-S-02014, Encontré el símbolo "advertencia" cuando se esperaba uno de los siguientes:(bla bla bla).

¿Puedo de alguna manera convencer a Pro*C de que lo ignore si no sabe qué hacer con él?no puedo quitar el #warning directiva tal como se usa en un archivo de encabezado que no puedo cambiar y debo incluir.

¿Fue útil?

Solución

De acuerdo con la Guía del programador Pro*C/C++ (capítulo 5 "Temas avanzados"), Pro*C ignora silenciosamente una serie de directivas del preprocesador, incluidas #error y #pragma, pero lamentablemente no #advertencia.Dado que sus directivas de advertencia están incluidas en un archivo de encabezado, es posible que pueda utilizar la macro ORA_PROC:

#ifndef  ORA_PROC
#include <irrelevant.h>
#endif

Sin embargo, por alguna razón, Pro*C genera errores si intenta ocultar una #advertencia directa de esa manera.

Otros consejos

opción de uso parse=none con proceso

No puedes.Pro*C sólo sabe #if e #include.Mi mejor consejo sería preprocesar el archivo como parte de su proceso de compilación para eliminar cosas que a Pro*C no le gusten.Algo como

grep -v -E '^#(warning|pragma|define)' unchangeable.h >unchangeable.pc.h

Mi otro consejo sería evitar la abominación que es Pro*C, pero supongo que te quedarás atrapado...

La respuesta de Jons Ericson es correcta.

Existe una segunda circunstancia en la que es posible que necesites utilizar ese truco.

Algunas versiones de Pro*c no pueden incluir archivos que no tienen una extensión de archivo.

La constante ORA_PROC también es una solución viable para ese problema.

/bin/make -f /css/hwmig/pcprg/proc9i32.mk procflags = "sqlcheck = semantics usiD = cssd/india09" pccsrc = bic i_sym = include = pc1 proc sqlcheck = semantics userid = cssd/india09 iname = bic incluido = = = = = = .include=/oracle/Ora92/precomp/public include=/oracle/Ora92/rdbms/public include=/oracle/Ora92/rdbms/demo include=/oracle/Ora92/plsql/public include=/oracle/Ora92/network/public

Pro*C/C++:Versión 9.2.0.6.0 - Producción el martes 2 de diciembre 14:05:38 2008

Copyright (c) 1982, 2002, Oracle Corporation.Reservados todos los derechos.

Valores de opciones predeterminados del sistema tomados de:/oracle/Ora92/precomp/admin/pcscfg.cfg

Error de sintaxis en la línea 135, columna 2, archivo /usr/include/standards.h:Error en la línea 135, columna 2 en el archivo /usr/include/standards.h

advertencia La opción -qdfp es necesaria para procesar el código de DFP en los encabezados.

.1 PCC-S-02014, encontró el símbolo "advertencia" al esperar uno de los siguientes:

una constante numérica, nueva línea, definir, elif, else, endif, error, si, si ifdef, ifndef, incluye, line, pragma, undef, un comando de preprocesador inmediato, un token C, el símbolo "Newline", fue sustituido por "advertencia de advertencia " continuar.

Error de sintaxis en la línea 30, columna 7, archivo bic.pc:Error en la línea 30, columna 7 en el archivo bic.pc archivo fp;...... 1 PCC-S-02201, encontró el símbolo "" cuando se espera uno de los siguientes:

;, = ([El símbolo ";" fue sustituido por "*" para continuar.

Error en la línea 0, columna 0 en el archivo bic.pc pcc-f-02102, error fatal al hacer el preprocesamiento de C

Elimine las dos líneas siguientes de /usr/include/standards.h

advertencia La opción -qdfp es necesaria para procesar el código de DFP en los encabezados.

demás

Modificar /usr/include/standards.h.
eliminar la linea #warning The -qdfp option is required to process DFP code in headers. El proceso no soporta el #warning,justo #else #if etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top