Am Fri, 13 May 2011 11:47:54 +0200
schrieb Florian Klaempfl <flor...@freepascal.org>:

> procedure dp(const x : string;y : array of const);inline;
>   begin
>     dbgstr(x,y);
>   end;

Nothing is wrong with that. Except:
- the code will never vanish from the object file. I like it, to have
  my debugging code all the time present in the sources with no need
  for commenting it out, if I think it is ready done.
  With some small macros with parameters you can do that job, having
  debugging messages, which completely vanish by doing one
  simple {$undefine MYDEBUG}.
- if I try for example to use the %LINE% and %FILE% info inside the
  debugging output, which I think is their means, I can not use a
  procedure without writing the FILE and LINE thing every time I call
  it. With a macro this would be done inside the macro.
        macro dp(x,y)
                dbgstr(whatever,{$I %FILE%},{$I %LINE%},something else)
  The macro expansion than gives the LINE and FILE info without that I
  am forced to write it again and again:
        dp(x,y) in the code gives
        dbgstr(...,{$I %FILE%},{$I %LINE%},...);
  which outputs:
        MSG: test-003.pas    [102] : My debugging Message.
  And not only the debugging message vanishes from my programm, the
  debugging code too, if I switch it of.

 But thats a special use.
 The generics,... thats in real an other question.

Regards
        Jörg
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to