一个#define两个值

时间:2014-02-14 19:17:30

标签: c gcc c-preprocessor

我在C中编写代码并在GCC中编译。正如tittle所说,我如何为同一个#define语句分配两个值。我不是故意将它们分配为枚举类型或类似东西,而是以这种方式。假设我有一个宏SET_SOMETHING(num1,num2)。如何使用 ONE num1,num2语句替换#define,例如:SOME_NUMBERS。因此,当我“调用”(不知道我是否正确地说调用)宏时,它看起来像这样:SET_SOMETHING(SOME_NUMBERS)。我已经尝试过显而易见的#define SOME_NUMBERS 1,5但是因为某种原因不能工作,为什么?定义只是替换代码吗?

如果可以,那么我将如何从定义SOME_NUMBERS中仅提取第一个或第二个数字?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

当您的宏解析SOME_NUMBERS时,它已经尝试将两个参数分开。 您必须连续使用两个宏

#define INNER_MACRO(A, B) dosomething(A, B)
#define OUTER_MACRO(...) INNER_MACRO(__VA_ARGS__)