Pergunta

Quando tento pré-compilar um arquivo *.pc que contém uma diretiva #warning, recebo o seguinte erro:

PCC-S-02014, encontrou o símbolo "aviso" ao esperar um dos seguintes:(blá bla bla).

Posso de alguma forma convencer o Pro*C a ignorar a coisa se não souber o que fazer com ela?não consigo remover o #warning diretiva, pois é usada em um arquivo de cabeçalho que não posso alterar e devo incluir.

Foi útil?

Solução

De acordo com Guia do programador Pro*C/C++ (capítulo 5 "Tópicos Avançados"), o Pro*C ignora silenciosamente uma série de diretivas do pré-processador, incluindo #error e #pragma, mas infelizmente não #warning.Como suas diretivas de aviso estão incluídas em um arquivo de cabeçalho, você poderá usar a macro ORA_PROC:

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

Por alguma razão, o Pro*C comete erros se você tentar ocultar um #warning direto dessa maneira.

Outras dicas

opção de uso parse=none com processo

Você não pode.Pro*C só sabe #if e #include.Meu melhor conselho seria pré-processar o arquivo como parte do processo de construção para remover coisas que o Pro*C não gostará.Algo como

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

Meu outro conselho seria evitar a abominação que é o Pro*C, mas acho que você está preso a ela...

A resposta de Jons Ericson está correta.

Há uma segunda circunstância em que você pode precisar usar esse truque.

Algumas versões do Pro*c não conseguem lidar com arquivos incluídos que não possuem uma extensão de arquivo.

A constante ORA_PROC também é uma solução viável para esse problema.

/bin/make -f /css/hwmig/pcprg/proc9i32.mk procflags = "sqlcheck = semântica userID = cssd/Índia09" pccsrc = bic i_sym = incluir = pc1 proc SqlCheck = semântico userID = cssD/ .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

Pró*C/C++:Versão 9.2.0.6.0 - Produção em terça-feira, 2 de dezembro, 14:05:38 2008

Direitos autorais (c) 1982, 2002, Oracle Corporation.Todos os direitos reservados.

Valores de opção padrão do sistema obtidos de:/oracle/Ora92/precomp/admin/pcscfg.cfg

Erro de sintaxe na linha 135, coluna 2, arquivo /usr/include/standards.h:Erro na linha 135, coluna 2 no arquivo /usr/include/standards.h

aviso A opção -qdfp é necessária para processar o código DFP nos cabeçalhos.

.1 PCC-S-02014, encontrou o símbolo "aviso" ao esperar um dos seguintes G:

Uma constante numérica, newline, define, elif, elif, endif, erro, se, ifdef, ifndef, incluir, linha, Pragma, Undef, um comando pré -processador imediato, um token C, o símbolo "nova linha" foi substituído por "aviso " continuar.

Erro de sintaxe na linha 30, coluna 7, arquivo bic.pc:Erro na linha 30, coluna 7 no arquivo bic.pc fp;...... 1 PCC-S-02201, encontrou o símbolo "" ao esperar um dos seguintes:

;, = ([O símbolo ";" foi substituído por "*" para continuar.

Erro na linha 0, coluna 0 no arquivo bic.pc pcc-f-02102, erro fatal ao fazer pré-processamento C

Remova as duas linhas abaixo de /usr/include/standards.h

aviso A opção -qdfp é necessária para processar o código DFP nos cabeçalhos.

outro

Modificar /usr/include/standards.h.
Exclua a linha #warning The -qdfp option is required to process DFP code in headers. O proc não suporta o #warning,apenas #else #if etc.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top