C语言程序中加调试开关

看PostgreSQL中的代码:

/* Debugging.... */

#ifdef FDDEBUG
#define DO_DB(A) A
#else
#define DO_DB(A)                /* A */
#endif

此后,在为定义 FDDEBUG的情况下,如果执行 DO_DB(function1());

就相当于 /*function1();*/,也就是什么都不执行

而且,如果对PostgreSQL进行查找,发现 没有定义 FDDEBUG 的地方,估计哪个开发者自己手工加入的吧:

[root@lex ttt]# find ./  | xargs grep "FDDEBUG"
Binary file ./src/backend/postgres matches
Binary file ./src/backend/storage/file/fd.o matches
./src/backend/storage/file/fd.c:#ifdef FDDEBUG
./src/backend/storage/file/fd.c:#if defined(FDDEBUG)
./src/backend/storage/file/fd.c:#endif   /* FDDEBUG */
./src/backend/storage/file/fd.c:#ifdef FDDEBUG
原文地址:https://www.cnblogs.com/gaojian/p/3101010.html