On 07/27/2017 02:30 AM, tbsaunde+...@tbsaunde.org wrote:
From: Trevor Saunders <tbsaunde+...@tbsaunde.org>
The preC++ way of passing information about the call site of a function was to
use a macro that passed __file__, __LINE__, and __FUNCTION__ to a function with
the same name with _stat appended to it. The way this is now done with C++ is
to have arguments where the default value is __LINE__, __FILE__, and
__FUNCTION__ in the caller. This has the significant advantage that if you
look for "^function (" you find the correct function, where in the C way of
doing things you need to realize its a macro and check the definition of the
macro to see what to look for next. So this removes a layer of indirection,
and makes things somewhat more consistant in using the C++ way of doing things.
So that's what these things are for! :)
I must be missing something either about the macros or about your
changes. The way I read the changes it seems that it's no longer
possible to call, say,
t = make_node (code);
and have __FILE__, __LINE__, and __FUNCTION__ passed as arguments
behind the scenes.
Instead, to achieve that, make_node has to be called like so
t = make_node (code PASS_MEM_STAT);
Otherwise calling make_node() with just one argument will end up
calling it with the defaults.
Martin