Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed compilation errors during macro expansion by vs2022 #237

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

cyrilcourvoisier
Copy link

On Visual Studio 2022 compiler, the macro expansion of DLOG_IF_F fails for some reasons. VA_ARGS is expanded into 'cond' variable of the VLOG_IF macro and : loguru::log() only got three arguments.

#define VLOG_IF_F(verbosity, cond, ...)
((verbosity) > loguru::current_verbosity_cutoff() || (cond) == false)
? (void)0
: loguru::log(verbosity, FILE, LINE, VA_ARGS)

I have added 'cond' parameter to DLOG_IF_F and DVLOG_IF_F so the signature maps correctly with VLOG_IF_F and it fixes the problem.

@abdes
Copy link

abdes commented Dec 28, 2024

The expansion of the forwarded arguments is actually a general problem, and because you know the next one is the condition, you solved it by specifying that argument separately. However, I think it should simply stay blind and force expansion of the argument using an extra layer of expansion:

#    define EXPAND(x) x

#    define DLOG_F(verbosity_name, ...) EXPAND(LOG_F(verbosity_name, __VA_ARGS__))
#    define DVLOG_F(verbosity, ...) EXPAND(VLOG_F(verbosity, __VA_ARGS__))
#    define DLOG_IF_F(verbosity_name, ...) EXPAND(LOG_IF_F(verbosity_name, __VA_ARGS__))
#    define DVLOG_IF_F(verbosity, ...) EXPAND(VLOG_IF_F(verbosity, __VA_ARGS__))
#    define DRAW_LOG_F(verbosity_name, ...) EXPAND(RAW_LOG_F(verbosity_name, __VA_ARGS__))
#    define DRAW_VLOG_F(verbosity, ...) EXPAND(RAW_VLOG_F(verbosity, __VA_ARGS__))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants