On 07/27/2017 02:30 AM, [email protected] wrote:
From: Trevor Saunders <[email protected]>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
