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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top