1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <assert.h>
#define dbg_printf printf
// #define dbg_print_int_decimal(n) (printf("\"...\" == %d\n", (n)))
#define dbg_print_int_decimal(n) (printf("%s == %d // in %s on line %d\n", (#n), (n), __FILE__, __LINE__))
// dbg_print_int_decimal(3 + 5) will expand to...
// (printf("%s == %d\n", ("3 + 5"), (3 + 5)))
// └───┬───┘ └──┬──┘
// (#n) (n)
// text of the argument expression (not quoted)
// passed for parameter n
// as a string literal
// i.e., "…"
// PROBLEM: The dbg_print_int_decimal(…) macro definition runs onto multiple lines.
int main(int argc, char* argv[]) {
for(int i = 0; i < 10; i++) {
// dbg_printf("i %% 2 == %d\n", i % 2);
dbg_print_int_decimal(i % 2);
// dbg_printf("((i %% 2) == 0) == %d\n", (i % 2) == 0);
dbg_print_int_decimal((i % 2) == 0);
if(i % 2 == 0) {
// dbg_printf("i == %d\n", i);
dbg_print_int_decimal(i);
}
}
return EXIT_SUCCESS;
}
/* vim: set tabstop=4 shiftwidth=4 fileencoding=utf-8 noexpandtab: */
|
© Copyright 2023 Alexander J. Quinn This content is protected and may not be shared, uploaded, or distributed.