宏形式参数列表中出现意外错误
Posted
技术标签:
【中文标题】宏形式参数列表中出现意外错误【英文标题】:Unexpected in macro formal parameter list Error 【发布时间】:2011-03-02 02:07:38 【问题描述】:我是一名实习生,我的老板让我从 Linux c 移植到 Visual C++。
在编译编码的时候,发现这个错误“unexpected in macro form parameter list”,这里是代码
#define cache_info(format, msg...)
do \
;\
while (0)
我不知道出了什么问题,也不知道编码是干什么用的。
我也不能问那个 Linux 程序员,因为他不在了。谁能帮帮我???
【问题讨论】:
【参考方案1】:听起来您的 Visual C++ 版本不支持可变参数宏。
您可能需要尝试类似的方法才能使其正常工作。
#define FUNC(foo) ThisFunc foo
void ThisFunc(int, ...);
int main()
FUNC((123, 456));
或者你可能只是缺少一个逗号?....
#define cache_info(format, msg,...)
【讨论】:
【参考方案2】:我认为问题可能来自两件事之一。
首先,您的宏定义为
cache_info(format, msg...)
但你可能是想写
cache_info(format, msg, ...)
虽然这可能只是您原始帖子中的一个错字。
更重要的是,C++ 不支持具有可变数量参数的宏(“可变宏”);它们只存在于 C 中。如果您尝试使用 C++ 编译器编译此 C 代码,编译器应该在此处给您一个错误,因为该代码不是合法的 C++。
【讨论】:
【参考方案3】:如果使用 Windows 64 位操作系统和 Visual Studio,请在运行此 bat 文件后尝试:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
它将注册环境设置。它对我有用..
【讨论】:
以上是关于宏形式参数列表中出现意外错误的主要内容,如果未能解决你的问题,请参考以下文章
为啥此 Django API 调用出现意外的关键字参数错误?