We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I'm porting a project to the ARM MDK and am running into an error related to a macro with a variable argument list.
I have a macro defined as follows:
#define ADC_PRINTF(format, ...) printf(format, __VA_ARGS__)
(which matches every example I've seen of how to do this)
In the actual usage of the macro, I get the following error from the compiler:
../Core/Src/ADC_control.c(171): error: expected expression ADC_PRINTF("blah blah blah\n\r"); ^../Core/Inc\ADC_control.h(29): note: expanded from macro 'ADC_PRINTF'#define ADC_PRINTF(format, ...) printf(format, __VA_ARGS__) ^
I'm sure there's something really obvious that I'm missing here. Any help would be appreciated.
Here are my compiler settings for the project:
C99/C++11 variadic macros don't work if the variadic part of the call is empty. Anyway, it's frowned upon to use *printf() with just the format string as the argument. Either make that
ADC_PRINTF("%s", "blah blah blah\n\r");
or just puts() / fputs() for simple string outputs that don't really need formatting.