首页 > 解决方案 > C ++:为什么将函数标记为内联会使“未引用的本地函数已被删除”警告静音?

问题描述

我的项目的一部分中有一个很小的头文件,它定义了一个辅助函数,如下所示:

static std::string GetErrorString(const MyObj& obj)
{
    // ... return the string
}

如果我将此标头包含在未使用该函数的源文件中,我会从 MSVC 收到以下警告:

warning C4505: 'GetErrorString': unreferenced local function has been removed

但是,如果我将功能更改为static inline,警告就会消失。我对此有几个问题:

  1. 该功能仍未使用。为什么它inline实际上很重要?
  2. 我的理解是,inline关键字只是对编译器的一个建议,以其无限的智慧可以随意忽略。如果是这种情况,这意味着这inline实际上不是解决此问题的方法,因为如果编译器决定不内联该函数,那么理论上我会再次收到警告。实际上正确的解决方案是什么?

标签: c++visual-c++

解决方案


推荐阅读