【问题标题】:cppcheck: Syntax error with using/typedefcppcheck:使用/typedef 的语法错误
【发布时间】:2019-08-21 11:16:34
【问题描述】:

我的 cppcheck 和 using/typedef 声明存在语法错误。 我有一个包含

的结构
struct inferior
{

    using visitor = int;

    template <typename T>
    bool operator()(const T &a, const T &b) const
    {
        return a < b;
    }
};

int main() { 
    return 0; 
}

当我运行cppcheck file.cpp 时,输出是

[file.cpp:5]: (error) syntax error 没有进一步的输出。

如果我删除 using 声明,错误就会消失。

我想知道这是否是 cppcheck 的正常行为。 using 声明未直接使用。 (这是一个简化的示例,使用 using 重新定义 int)。

如果需要一些上下文:在我的应用程序中,using 定义了访问者 OnlyArithmetic 的特化,如下所示:using visitor = OnlyArithmetic&lt;inferior&gt; 使用元编程技术过滤非算术类型,然后我调用 std::visit on劣质::访客()。我使用这个技巧来避免对我需要的所有结构(下级、上级、...)重复过滤部分。

[编辑] 使用 cppcheck 1.88

【问题讨论】:

  • 尝试在命令行中添加--std=c++11,不知道cppcheck默认使用的是什么
  • 快速浏览 cppcheck 的论坛表明最近出现了一个错误;还有其他关于错误语法错误的报告。如果您有最新版本,我会尝试回滚一点。
  • 什么版本的cppcheck?
  • 感谢您的回复,我尝试使用--std=c++11,但行为相同。我使用的是 cppcheck 1.88(最新的自制配方)。我从源代码(1.89)构建了 cppcheck 但同样的问题但输出更多。然后我降级到 1.76.1(他们的 branches 之一)并且问题消失了

标签: c++ cppcheck


【解决方案1】:

正如 molbdnilo 建议的那样。 cppcheck release 1.85 问题消失了。

【讨论】:

    【解决方案2】:

    这个问题是在 Cppcheck 1.86 中引入的,并在 1.89 版中得到修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多