Peter Eisentraut wrote:
>
> It has been brought up that elog should be able to automatically fill in
> the file, line, and perhaps the function name where it's called, to avoid
> having to prefix each message with the function name by hand, which is
> quite ugly.
>
> This is doable, but it requires a C preprocessor that can handle varargs
> macros. Since this is required by C99 and has been available in GCC for a
> while, it *might* be okay to rely on this.
>
> Additionally, C99 (and GCC for a while) would allow filling in the
> function name automatically.
>
> Since these would be mostly developer features, how do people feel about
> relying on modern tools for implementing these? The bottom line seems to
> be that without these tools it would simply not be possible.
It is possible, however, the macros require an extra set of parentheses:
void elog_internal(const char* file, unsigned long line, ... );
#define ELOG(args) elog_internal(__FILE__, __LINE__, args)
ELOG(("%s error", string))
For portability to older compilers, you should probably not require C99.
Also, I'm not positive, but I think that varargs are not part of C++
yet.
However, they will likely be added (if not already in draft form).
Neal
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com