宏使用循环定义

时间:2016-08-31 16:01:42

标签: c macros

我必须将宏mode_n传递给库中的宏set_fieldmode_n是使用mode_one

定义的
#define mode_one(k, phi) cos(k*x + phi)

xset_field中定义。 phi是一个随机数。 mode_n是具有不同mode_onek的一系列phi的总和。 mode_n的一个简单示例是

#define mode_n (mode_one(1, 0.5) + mode_one(2, 0.4) + mode_one(3, 0.9))

有3个术语。如果有数百个这样的术语,那将是乏味的。这就是为什么我希望使用循环定义mode_n的原因。 我希望n成为mode_n的一个参数。 set_field像这样的宏

#define set_field(mode_n) { \
double x, f; \
for (int i = 0; i < 10; i++) { \
    x = i * 10; \
    f = mode_n; \
}

是否可以使用C宏定义mode_n

1 个答案:

答案 0 :(得分:-1)

是的,你可以在宏中放一个循环。把它放在一行或多行。如果它是多行,则需要在行尾添加一个转义字符。