#include dentro de um #ifdef

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

#include dentro de um #ifdef

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2822
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

#include dentro de um #ifdef

Mensagem por Jairo Maia »

Olá Alexandre,

Sim. Normal. Que problema você está tendo?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

#include dentro de um #ifdef

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

#include dentro de um #ifdef

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2822
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

#include dentro de um #ifdef

Mensagem 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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2822
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP
Curtiu: 2 vezes

#include dentro de um #ifdef

Mensagem por Jairo Maia »

Legal Alexandre, tenha uma boa noite. Até amanhã...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

#include dentro de um #ifdef

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (Linux/Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder