Come fare il Pro*C fronteggiare #avviso direttive?
-
08-06-2019 - |
Domanda
Quando cerco di precompilare un *.pc il file che contiene un avviso direttiva ricevo il seguente errore:
PCC-S-02014, ha Incontrato il simbolo "attenzione" quando aspettandosi una delle seguenti operazioni:(bla bla bla).
Posso in qualche modo convincere Pro*C a ignorare la cosa, se non sai cosa fare con esso?Non è possibile rimuovere il #warning
la direttiva, come si usa in un file di intestazione che non posso cambiare e deve includere.
Soluzione
Secondo il Pro*C/C++ Manuale del Programmatore (capitolo 5 "Advanced Topics"), Pro*C, silenziosamente, ignora una serie di direttive del preprocessore tra #errore e #pragma, ma, purtroppo, non #attenzione.Poiché la vostra attenzione direttive sono inclusi in un file di intestazione, si potrebbe essere in grado di utilizzare il ORA_PROC macro:
#ifndef ORA_PROC
#include <irrelevant.h>
#endif
Per qualche ragione, Pro*C errore se si tenta di nascondere un dritto #avviso in questo modo, comunque.
Altri suggerimenti
utilizzare l'opzione parse=none
con proc
Non si può.Pro*C solo sa #if e #include.Il mio consiglio sarebbe di pre-processare il file come parte del processo di generazione di togliere roba Pro*C non piace.Qualcosa di simile
grep -v -E '^#(warning|pragma|define)' unchangeable.h >unchangeable.pc.h
Il mio consiglio sarebbe quello di evitare l'abominio che è Pro*C, ma sto cercando di indovinare sei bloccato con esso...
Jons Ericsons risposta è corretta.
C'è una seconda circostanza in cui si può avere bisogno di di usare quel trucco.
Alcune versioni di Pro*c non può trattare con i file che non hanno estensione.
Il ORA_PROC costante è una soluzione efficace per questo problema.
/bin/make -f /css/hwmig/pcprg/proc9i32.mk PROCFLAGS="sqlcheck=SEMANTICA userid=cssd/india09" PCCSRC=bic I_SYM=includono= pc1 proc sqlcheck=SEMANTICA userid=cssd/india09 iname=bic includono=.include=/oracle/Ora92/precomp/pubblico includono=/oracle/Ora92/rdbms/pubblico includono=/oracle/Ora92/rdbms/demo include=/oracle/Ora92/plsql/pubblico includono=/oracle/Ora92/rete/pubblico
Pro*C/C++:Rilascio 9.2.0.6.0 - Produzione il Mar 2 Dic 14:05:38 2008
Copyright (c) 1982, 2002, Oracle Corporation.Tutti i diritti riservati.
Sistema di valori predefiniti delle opzioni prese da:/oracle/Ora92/precomp/admin/pcscfg.cfg
Errore di sintassi alla riga 135, colonna 2, il file /usr/include/standard.h:Errore alla riga 135, colonna 2 nel file /usr/include/standard.h
avvertenza L'-qdfp opzione è necessaria per il processo di DFP codice nell'header.
.1 PCC-S-02014, ha Incontrato il simbolo "attenzione" quando aspettava uno dei seguenti g:
una costante numerica, newline, definire, elif, else endif l'errore, se, ifdef, ifndef, includere, linea, pragma, undef, un immediato preprocessore di comando, un C token, Il simbolo "newline" è sostituito con "attenzione" per continuare.
Errore di sintassi alla riga 30, colonna 7, file bic.pc:Errore alla riga 30, colonna 7 in file bic.pc FILE fp;......1 PCC-S-02201, ha Incontrato il simbolo ""quando aspettandosi una delle seguenti operazioni:
;, = ( [ Il simbolo ";" è sostituito con "*" per continuare.
Errore alla riga 0, colonna 0 nel file bic.pc PCC-F-02102, errore Fatale mentre si fa il C pre-elaborazione
Rimuovere le seguenti due linee da /usr/include/standard.h
avvertenza L'-qdfp opzione è necessaria per il processo di DFP codice nell'header.
altro
Modificare /usr/include/standards.h
.
Eliminare la riga #warning The -qdfp option is required to process DFP code in headers.
Il proc non supporta il #warning
,solo #else
#if
ecc.