Só acrescentando:
É por isso que chamo a compilação -w3 -es2 de tolerância zero.
Ela obriga a deixar o fonte limpo, e sem possíveis causas de erro.
Parece ser bobeira esse alerta, mas...
Imagine isso num fonte de 2.000 linhas.
De repente você está olhando a variável começar com um valor, e o problema é no meio dessas 2.000 linhas ele estar sendo outro.
Poderia ser o cálculo de ICMS, IPI, total da nota, etc.
Você pode ter vários cálculos para a mesma variável, e ficar difícil encontrar o problema, justamente porque um anula o outro.
um exemplo com esse tipo de coisa:
Código: Selecionar todos
PROCEDURE Main
LOCAL nOpcGeral := 0, nTotal
nTotal := nOpcGeral * 2
nTotal := nOpcGeral * 3
? nTotal
RETURN
d:\temp>hbmk2 test -w3 -es2 -n
hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
Harbour 3.4.0dev (0e13c7c08d) (2019-09-09 14:45)
Copyright (c) 1999-2019,
https://github.com/JoseQuintas/harbour-core/
Compiling 'test.prg'...
test.prg:10: warning W0032 Variable 'NTOTAL' is assigned but not used in function '5:MAIN'
No code generated.
Código: Selecionar todos
PROCEDURE Main
LOCAL nOpcGeral := 0, nTotal
nTotal := nOpcGeral * 2
nTotal := nOpcGeral * 3
? @nTotal
RETURN
d:\temp>hbmk2 test -w3 -es2 -n
hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
Harbour 3.4.0dev (0e13c7c08d) (2019-09-09 14:45)
Copyright (c) 1999-2019,
https://github.com/JoseQuintas/harbour-core/
Compiling 'test.prg'...
Lines 9, Functions/Procedures 1
Generating C source output to 'C:\Users\jmcqu\AppData\Local\Temp\hbmk_w9ullv.dir\test.c'... Done.