Página 1 de 1

Warning compilando com Harbour+Bcc72

Enviado: 26 Fev 2024 11:41
por sygecom
Pessoal,
Alguém saberia o que quer dizer aviso abaixo e como corrigir no meu sistema.

Warning W8066 obj_bcc\hbCTe_HWgui.c 91117: Unreachable code in function hb_INITSTATICS

Estou usando harbour 3.2( bem atual) e BCC7.2( 32 bits )

Warning compilando com Harbour+Bcc72

Enviado: 26 Fev 2024 17:01
por marcosgambeta
De forma geral, 'Unreachable code' indica código que nunca será executado. Por exemplo: uma função, em C, tem um return e após o return, tem 1 ou mais linhas de código. Visto que a execução da função termina no return, o código que vem depois nunca será executado.

No momento, não sei dizer o motivo do BCC gerar este aviso. Mas como é um aviso e não um erro, não deverá afetar seu sistema.

Se quiser, pode silenciar o aviso com a linha abaixo no .hbp:

Código: Selecionar todos

{bcc}-cflag=-w-8066
Não testei a sintaxe, mas acredito que está correta. Avise se não funcionar.

Warning compilando com Harbour+Bcc72

Enviado: 26 Fev 2024 17:24
por marcosgambeta
O Harbour também identifica situações de 'Unreachable code' em código xBase, conforme exemplo abaixo:

Código: Selecionar todos

FUNCTION main()

   ? func1()

RETURN NIL

STATIC FUNCTION func1()

   ? "codigo que sera executado"

   RETURN 1

   ? "codigo que nunca será executado" // test1.prg(13) Warning W0028  Unreachable code

RETURN 2
No caso deste aviso, ele aparece quando o .prg está sendo processado pelo Harbour.

No caso apresentado pelo Leonardo, o aviso está vindo do compilador C (BCC). Então, já não é uma questão de corrigir código xBase.

Warning compilando com Harbour+Bcc72

Enviado: 26 Fev 2024 17:27
por sygecom
marcosgambeta escreveu:De forma geral, 'Unreachable code' indica código que nunca será executado. Por exemplo: uma função, em C, tem um return e após o return, tem 1 ou mais linhas de código. Visto que a execução da função termina no return, o código que vem depois nunca será executado.

No momento, não sei dizer o motivo do BCC gerar este aviso. Mas como é um aviso e não um erro, não deverá afetar seu sistema.

Se quiser, pode silenciar o aviso com a linha abaixo no .hbp:

Código: Selecionar todos

{bcc}-cflag=-w-8066
Não testei a sintaxe, mas acredito que está correta. Avise se não funcionar.
Deu certo mestre, obrigado por mais uma dica.

Warning compilando com Harbour+Bcc72

Enviado: 26 Fev 2024 20:57
por sygecom
Pelo menos achei mesmo uma condição que causava isso de ter um RETURN e o código continuar, mais ou menos isso abaixo, ele se perde no .C quando tem um TRY, mudei isso para preencher uma variável e ver o resultado dela e sumiu o erro.

Código: Selecionar todos

         TRY
            IF aRET['cStat']<>'217'
            ENDIF
         CATCH
            ::oCTe_GERAIS:uiAviso('Esta CT-e não pode ser excluída '+HB_OsNewLine()+;
                                  'Não há resposta do SEFAZ')
            RETURN(.F.)
         END