c++ - C ++:为什么将函数标记为内联会使“未引用的本地函数已被删除”警告静音?
问题描述
我的项目的一部分中有一个很小的头文件,它定义了一个辅助函数,如下所示:
static std::string GetErrorString(const MyObj& obj)
{
// ... return the string
}
如果我将此标头包含在未使用该函数的源文件中,我会从 MSVC 收到以下警告:
warning C4505: 'GetErrorString': unreferenced local function has been removed
但是,如果我将功能更改为static inline
,警告就会消失。我对此有几个问题:
- 该功能仍未使用。为什么它
inline
实际上很重要? - 我的理解是,
inline
关键字只是对编译器的一个建议,以其无限的智慧可以随意忽略。如果是这种情况,这意味着这inline
实际上不是解决此问题的方法,因为如果编译器决定不内联该函数,那么理论上我会再次收到警告。实际上正确的解决方案是什么?
解决方案
推荐阅读
- xwiki - xwiki 10.5 办公服务器添加扩展问题
- ajax - 为什么在 componentDidMount 中取消异步/ajax 请求
- vba - ActiveSheet.Paste 在工作簿事件中不起作用,但在模块中起作用
- java - Java WebSocket 客户端突然关闭连接
- c++ - WsaRecv/GetQueuedCompletionStatus 读取数据较晚
- php - Wordpress - 购买前验证身份
- javascript - 如何在用逗号分隔的文本框中获取多个值
- javascript - 如何用数字加特殊字符替换字符串中的所有数字?
- powershell - Powershell 内存管理
- vue.js - Nativescript RadListView scrollOffset 始终为 0