【发布时间】:2014-02-21 11:08:20
【问题描述】:
我有以下类似的东西,但我不满意:
#define BEGIN {
#define END_1 };
#define END_2 END_1 };
#define END_3 END_2 };
// ... (possibly more of these) ...
#define END(x) END_ ## x
int main()
{
BEGIN
BEGIN
BEGIN
END(3) // <- I don't want to pass the 3 here
BEGIN
BEGIN
END(2) // <- I don't want to pass the 2 here
}
我想重写BEGIN 和/或END 的定义,这样后者就不需要带参数了。
我相信这是不可能做到的,但我对 C 预处理器不是很有经验。至少有什么方法比我发布的示例更接近我的目标吗?
【问题讨论】:
-
每次调用“BEGIN”时,也要调用i++,最后通过END(i)。只是一个建议。
-
@Abhineet:我真的不明白你的建议:(你能用一些编译代码说明你的意思吗?
-
哇,认真的吗?您正在使用...宏...作为大括号...?
标签: c macros c-preprocessor