Página 1 de 1

#include dentro de um #ifdef

Enviado: 09 Nov 2015 19:54
por asimoes
Pessoal,

Tem como incluir um #include dentro de um #ifdef ?

Ex.: hbmk2 teste -dteste

#ifdef teste
#include "teste.ch"
#else
#include "teste2.ch"
#endif

#include dentro de um #ifdef

Enviado: 09 Nov 2015 20:21
por Jairo Maia
Olá Alexandre,

Sim. Normal. Que problema você está tendo?

#include dentro de um #ifdef

Enviado: 09 Nov 2015 20:41
por asimoes
Olá Jairo,

Não está funcionando.

Veja o código:

Código: Selecionar todos

FUNCTION MAIN
Local cToken:="D"

#if defined( prod )
   #include "token.ch"         
#endif
   
#if defined( homolog )
   #include "token.ch"  
#endif
Alert(cToken)
RETURN Nil
No arquivo token.ch

Código: Selecionar todos

#ifdef prod
   #define cToken "P"
#endif
#ifdef homolog
   #define cToken "H"
#endif

#include dentro de um #ifdef

Enviado: 09 Nov 2015 20:46
por asimoes
Jairo,

Está funcionando, eu não sei o que foi, o include que eu estava testando era datas.ch alterei o nome para token.ch e funcionou, não entendi.

#include dentro de um #ifdef

Enviado: 09 Nov 2015 20:58
por Jairo Maia
Mas você precisa definir a sessão que deseja para o #ifdef. Altere o exemplo assim que vai funcionar:

Código: Selecionar todos

FUNCTION MAIN
Local cToken:="D"

#define prod                // se for producao
//#define homolog       // comente prod e descomente homolog se for homologacao

#if defined( prod )
   #include "token.ch"         
#endif
   
#if defined( homolog )
   #include "token.ch"  
#endif
Alert(cToken)
RETURN Nil

#include dentro de um #ifdef

Enviado: 09 Nov 2015 21:00
por Jairo Maia
Legal Alexandre, tenha uma boa noite. Até amanhã...

#include dentro de um #ifdef

Enviado: 10 Nov 2015 11:37
por JoséQuintas
Talvez porque no que postou estava errado

Código: Selecionar todos

#if defined( prod )
Só comentário:

prod confunde com produto.
Talvez seja mais interessante, já que não faz diferença pro compilador, usar algo assim:

#define AMBIENTE_PRODUCAO
#define AMBIENTE_HOMOLOGACAO

E talvez até mover essa parte para o token.ch, pra não precisar #ifdef nos fontes