参数化包括

时间:2017-12-06 14:31:07

标签: c macros c-preprocessor

在一些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")))

我认为这可能是一种有用的技术,可以通过在扩展站点指定行为来概括所包含的代码。

此模式是否有名称,或者之前是否已写过?

1 个答案:

答案 0 :(得分:4)

这是通常称为X macros的变体。

进一步阅读