在一些C程序中(例如在gecko中)我注意到一个习惯用法,程序将暂时定义一个宏,然后包含一个使用该宏的文件,然后取消定义宏。这是一个简单的例子:
speak.c:
#define SPEAK(phrase) (printf("When I speak I say %s\n", (phrase)))
#include "dog.h"
#undef SPEAK
dog.h:
SPEAK("woof");
扩展为:
(printf("When I speak I say %s\n", ("woof")))
我认为这可能是一种有用的技术,可以通过在扩展站点指定行为来概括所包含的代码。
此模式是否有名称,或者之前是否已写过?