hi.
click through
src/backend/commands/copyfromparse.c
comments link.
/*
* These macros centralize code used to process line_buf and input_buf buffers.
* They are macros because they often do continue/break control and to avoid
* function call overhead in tight COPY loops.
*
* We must use "if (1)" because the usual "do {...} while(0)" wrapper would
* prevent the continue/break processing from working. We end the "if (1)"
* with "else ((void) 0)" to ensure the "if" does not unintentionally match
* any "else" in the calling code, and to avoid any compiler warnings about
* empty statements. See http://www.cit.gu.edu.au/~anthony/info/C/C.macros.
*/
found the link is invalid.
The valid link should be
https://antofthy.gitlab.io/info/C/C_macros.txt
?
https://antofthy.gitlab.io/info/C/C_macros.txt
says:
General solutions to the brace-block problem.
#define macro(x) do { statements; } while (0) /* prefered */
#define macro(x) if (1) { statements; } else