2008-08-18 9 views
3

Wenn ich versuche, eine * .pc Datei vorzuzukompilieren, die ein #WARNING Direktive ich folgende Fehlermeldung empfangen enthält:Wie kann man Pro * C mit Warnungsanweisungen umgehen?

PCC-S-02014, Encountered the symbol "warning" when expecting one of the following: (bla bla bla).

Kann ich irgendwie Pro * C überzeugen, die Sache zu ignorieren, wenn sie nicht, was sie nicht kennen damit machen? Ich kann die #warning-Direktive nicht entfernen, da sie in einer Header-Datei verwendet wird, die ich nicht ändern kann und die sie enthalten muss.

Antwort

4

Nach dem Pro * C/C++ Programmer's Guide (Kapitel 5 "Erweiterte Themen"), ignoriert Pro * C stillschweigend eine Reihe von Präprozessordirektiven einschließlich #fehler und #pragma, aber leider nicht # warning. Da Ihre Warnung Richtlinien in einer Header-Datei enthalten sind, können Sie in der Lage sein, den ORA_PROC Makro zu verwenden:

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

Aus irgendeinem Grund Pro * C Fehler, wenn Sie versuchen, eine gerade #WARNING, so zu verstecken, aber .

0

Sie können nicht. Pro * C kennt nur #if und #include. Mein bester Rat wäre, die Datei als Teil Ihres Build-Prozesses vorzuverarbeiten, um Dinge zu entfernen, die Pro * C nicht mögen. So etwas wie

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

Mein anderer Rat wäre, den Greuel zu vermeiden, die Pro ist * C, aber ich vermute, Sie mit ihm stecken ...

0

Jons Ericssons Antwort ist korrekt.

Es gibt einen zweiten Umstand, in dem Sie diesen Trick möglicherweise verwenden müssen.

Einige Versionen von Pro * c können nicht mit Include-Dateien umgehen, die keine Dateierweiterung haben.

Die ORA_PROC-Konstante ist eine praktikable Lösung für dieses Problem.

0

/bin/make -f /css/hwmig/pcprg/proc9i32.mk PROCFLAGS = "SQLCheck = SEMANTIK userid = cssd/india09" PCCSRC = bic I_SYM = include = pc1 proc SQLCheck = SEMANTIK userid = cssd/india09 iname = bic include =. include =/oracle/Ora92/precomp/öffentliches include =/oracle/Ora92/rdbms/öffentliches include =/oracle/Ora92/rdbms/demo include =/oracle/Ora92/plsql/öffentliches include =/oracle/Ora92/network/public

Pro * C/C++: Release 9.2.0.6.0 - Produktion am Di Dez 2 14:05:38 2008

Copyright (c) 1982, 2002, Oracle Corporation. Alle Rechte vorbehalten.

Systemwerte Standardoption entnommen aus: /oracle/Ora92/precomp/admin/pcscfg.cfg

Syntaxfehler in Zeile 135, Spalte 2, Datei /usr/include/standards.h: Fehler in Zeile 135, Spalte 2 in Datei /usr/include/standards.h

Warnung Die Option -qdfp ist erforderlich, um DFP-Code in Headern zu verarbeiten.

.1 PCC-S-02014, Fand das Symbol "Warnung", wenn einer der followin g erwarten:

eine numerische Konstante, Newline, definieren, elif, else, endif, Fehler, wenn ifdef, ifndef, include, line, pragma, undef, ein sofortiger Präprozessorbefehl, ein C-Token, Das Symbol "newline" wurde durch "warning" ersetzt, um fortzufahren.

Syntaxfehler in Zeile 30, Spalte 7, Datei bic.pc: Fehler in Zeile 30, Spalte 7 in der Datei bic.pc FILE fp; ...... PCC-S-02201, stieß das Symbol "", wenn eine der folgenden erwarten:

; = ([ Das Symbol ";" wurde für "*", substituiert weiterhin

Fehler in Zeile 0, Spalte 0 in Datei bic.pc PCC-F-02102, Fatal Fehler beim C Vorverarbeitung

tun.
-1

unter zwei Linien von entfernen /usr/include/standards.h

Die -qdfp Option Warnung erforderlich ist DFP Code in Header zu verarbeiten.

sonst

1

Verwendung Option parse=none mit proc

-2

Ändern /usr/include/standards.h.
die Zeile löschen #warning The -qdfp option is required to process DFP code in headers. Die proc nicht die #warning nicht unterstützt, nur #else#if usw.

+1

Dies ist * Absolutely Positively DIE * falsche Antwort. Sie sollten * NIEMALS * die Systemkopfzeilen ändern, um einen Programmfehler zu beheben. –

Verwandte Themen