宏形式参数列表中出现意外错误

时间:2011-03-02 02:07:39

标签: c++ c visual-c++

我是一名实习生,我的老板告诉我要从Linux c移植到Visual C ++。

当我构建编码时,我发现此错误“在宏形式参数列表中意外”,这里是代码

#define cache_info(format, msg...)  
    do { \
        ;\
    } while (0)  

我不知道出了什么问题以及编码的用途。

我不能问Linux程序员,因为他出去了。有人可以帮助我吗?

3 个答案:

答案 0 :(得分:6)

听起来您的Visual C ++版本不支持可变参数宏。

你可能需要尝试这样的方法才能让它发挥作用。

#define FUNC(foo)  ThisFunc foo

void ThisFunc(int, ...);

int main()
{
    FUNC((123, 456));
}

或者你可能只是错过逗号?....

#define cache_info(format, msg,...)  

答案 1 :(得分:2)

我认为问题可能来自两件事之一。

首先,您的宏定义为

cache_info(format, msg...)

但你可能想写

cache_info(format, msg, ...)

虽然这可能只是你原帖中的拼写错误。

更重要的是,C ++中不支持具有可变数量参数的宏(“可变参数宏”);它们仅存在于C中。如果您尝试使用C ++编译器编译此C代码,编译器应该在此处给出错误,因为代码不是合法的C ++。

答案 2 :(得分:-1)

如果使用Windows 64位操作系统,& visual studio,运行此bat文件后尝试:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ vsvars32.bat

它将注册env设置。它对我有用..