自引用宏的替代方案

时间:2015-10-06 10:51:25

标签: c debugging macros

我的项目调试输出变得太复杂,人类无法处理,所以我决定使用标签(或标签)来简化日志消息的分组和过滤。

我还希望能够在已定义某些标签的地方添加更新的标签。

例如,如果头文件包含在多个C文件中并定义了特定标记,我希望在每个C文件中添加另一个可选标记。我试图使用自引用宏来实现这一点,但由于预编译器只处理语句一次,所以它没有用。任何想法如何正确地做到这一点?

header.h:

#define TAGS "aaa"

file1.c:

#include "header.h"

#ifndef TAGS 
#define TAGS "bbb"
#else
#define TAGS TAGS ", bbb"
#endif

printf(TAGS);

file2.c:

#ifndef TAGS 
#define TAGS "ccc"
#else
#define TAGS TAGS ", ccc"
#endif


printf(TAGS);

在上面的示例中,我希望将“aaa bbb”作为file1的输出,将“ccc”作为另一个文件中的“ccc”。

0 个答案:

没有答案