[Gambas-user] About library and component packaging in Gambas 3

tobi tobiasboege01 at ...1601...
Sat May 5 15:30:41 CEST 2012


On Sat, 05 May 2012, tobi wrote:
> On Sat, 05 May 2012, Benoît Minisini wrote:
> > Le 05/05/2012 08:51, tobi a écrit :
> > >
> > > Concerning the preprocessor... What about utilising the cpp just as a command that runs over each
> > > class and module file before seen by the compiler code? It's already powerful enough or is that
> > > too much for gambas? (It would break existing code due to character case in the gambas preprocessor
> > > directives...)
> > >
> > 
> > Yes, it will slow down the compiler and break everything (because the 
> > code becomes impossible to analyze)
> > 
> > Regards,
> > 
> > -- 
> > Benoît Minisini
> > 
> > ------------------------------------------------------------------------------
> > Live Security Virtual Conference
> > Exclusive live event will cover all the ways today's security and 
> > threat landscape has changed and how IT managers can respond. Discussions 
> > will include endpoint security, mobile security and the latest in malware 
> > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> > _______________________________________________
> > Gambas-user mailing list
> > Gambas-user at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gambas-user
> 
> OK.
> But just for interest, what do you mean by "impossible to analyze"? Excuse me, but I haven't read
> anything from the compiler yet. (When you say "analyze", I think of line numbers and stuff
> (optimisation can be done later, too, right?), but line numbers would be possible, I'm almost a bit
> certain, to report to the IDE, if that is what you mean)
> I just tested it and found that cpp warns at ['] the gambas comment character which, of course, may
> not ahve any closing ['] one and thus confuses the program but it fearlessly ignores that and
> continues as expected.
> 
> As an example, consider these actions:
> $ ls -AR
> .:
> .gambas  .project  .src  .startup
> 
> ./.gambas:
> 
> ./.src:
> MMain.module  myfunc.function
> $ cp .src/MMain.module .src/MMain.module.old
> $ cat .src/MMain.module
> ' Gambas module file
> 
> #ifndef NOPREPROC
> #define PREPROC
> #endif
> 
> #include "myfunc.function"
> 
> Public Sub Main()
> 
> #ifdef PREPROC
>   /*
>    * I can use these comments when c-preprocessed, of course!
>    */
>   Print "This is cool"
>   myfunc()
> #endif
>   Print "This is normal"
> 
> End
> $ cpp .src/MMain.module.old | sed 's/^#.*$//' > .src/MMain.module
> .src/MMain.module:1:1: warning: missing terminating ' character [enabled by default]
> $ gbc3 -ga
> OK
> $ cp .src/MMain.module.old .src/MMain.module
> $ gbx3
> This is cool
> preprocessing
> This is normal
> $ cpp -DNOPREPROC .src/MMain.module.old | sed 's/^#.*$//' > .src/MMain.module
> $ gbc3 -ga
> OK
> $ gbx3
> This is normal
> 
> It works!
> Used by people at least a bit familiar with the basics of the cpp won't have any problems, the only
> thing is the translation of the cpp line control which I have discarded gracefully using sed because
> I don't make any mistakes ;)
> 
> It's clear that it would slow down the compiler and that most people won't need those fancy tricks
> as gambas is basic and has advanced enough compiling mechanisms, I'm convinced, but: a simple line
> on the top of a file to enable the cpp for the rest of people that may utilise it wouldn't hurt?:
> ' Gambas class file
> ' :use cpp
> Please, explain your worries.
> 
> A more intrusive "feature" would be the ability of using that c-/c++-style comments /**/, // within
> gambas when cpp'ed...
> 
> I have no reason to write this post (never needed to used conditional compilation or something from
> within gambas) except to save you work.
> 
> Reagards,
> Tobi

Oh, you should know:

$ cat .src/myfunc.function
#ifdef PREPROC
Private Sub myfunc()
  Print "preprocessing"
End
#endif

And forget that

$ cp .src/MMain.module.old .src/MMain.module

above, it is useless.




More information about the User mailing list