【问题标题】:Create definition of 'xxx': Unable to create function 'xxx'. Function signature was copied to clipboard创建“xxx”的定义:无法创建函数“xxx”。函数签名已复制到剪贴板
【发布时间】:2021-06-21 08:12:19
【问题描述】:

我有一个写在头文件中的类,带有函数声明:

文件:Foo.h

class Foo
{
    void Update();
}

注意此时没有Foo.cpp文件。

我右键单击Update,然后执行快速操作/重构Create definition of 'Update' in Foo.cpp(如microsoft docs 中所述)。

应该发生的是 Foo.cpp 被创建,#include Foo.h 在第一行,并添加了函数定义。

相反,会创建Foo.cpp,在第一行没有 #include Foo.h,并且添加了函数定义。此外,我收到一个弹出窗口,提示“无法创建函数‘更新’。函数签名已复制到剪贴板。”

反复尝试创建定义将导致相同的错误弹出窗口重新打开。

如果我手动进入Foo.cpp 并在顶部添加#include Foo.h,则创建定义操作现在将适用于Foo.h

几个月前我从未遇到过这个问题,可能是由于 vs-2019 的最新更新,但我无法验证这一点。该问题同时影响社区版 16.9.1 和 16.9.2。我已为此向 Microsoft 提交了错误报告。

创建大量文件/函数时这是一个非常乏味的问题,我正在寻找解决方案或解决方法。

编辑

针对cmets,这里是一个额外的测试用例重现错误:

class Foo
{
    void Update();
};

【问题讨论】:

  • 类定义有语法错误。也许,这是一个原因。

标签: c++ visual-studio visual-c++ visual-studio-2019


【解决方案1】:

其实Create definition of'Update' in Foo.cpp不能创建Update函数和Foo.cpp。所以,你可以把这个问题提交给Microsoft DC

但是,在Foo.cpp文件已经创建的情况下,Create definition of'Update' in Foo.cpp可以创建Update函数。另外,我建议您可以使用Create Declaration/Definition。它可以在没有 cpp 文件的情况下创建 Foo.cppUpdate 函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多