我是一名实习生,我的老板告诉我要从Linux c移植到Visual C ++。
当我构建编码时,我发现此错误“在宏形式参数列表中意外”,这里是代码
#define cache_info(format, msg...)
do { \
;\
} while (0)
我不知道出了什么问题以及编码的用途。
我不能问Linux程序员,因为他出去了。有人可以帮助我吗?
答案 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设置。它对我有用..