【问题标题】: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 程序员,因为他不在了。谁能帮帮我???

【问题讨论】:

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


    【解决方案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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-07-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-14
          • 1970-01-01
          • 2018-05-04
          • 1970-01-01
          • 2012-10-21
          相关资源
          最近更新 更多