请参阅在 Visual Studio 2019 中捕获 std::exception 时对函数模板实例化消息的引用
See reference to function template instantiation message when catch std::exception in Visual Studio 2019
我在 Visual Studio 2019 年构建 C++ 控制台应用程序期间注意到一条恼人的消息,Windows 10。我有一个生成消息的模板函数:
message : see reference to function template instantiation 'int run_loop<wchar_t>(int,const char_type *[])' being compiled
with
[
char_type=wchar_t
]
类似的代码编译正常,在 macOS 和 Ubuntu 上没有消息,但现在我将它移植到 Windwos 并看到这个。这不是错误或警告,只是一条信息消息。我开始注释掉函数内部的代码块,发现当我注释掉 std::exception
时,捕获消息消失了。此消息是什么意思,我应该如何处理?保持原样还是我应该以其他方式重新设计我的代码?以下是生成上述消息的简化代码片段:
#include <exception>
template<class char_type>
int run_loop(int argc, const char_type* argv[])
{
try
{
}
catch (const std::exception& ex)
{
}
return 0;
}
int wmain(int argc, const wchar_t* argv[])
{
return run_loop(argc, argv);
}
我的环境:
OS:Windows 10 Pro x64 版本 1909 OS 内部版本 18363.836
IDE: Visual Studio 2019 版本 16.6.0
具有默认设置的 C++ 中的 Win32 控制台应用程序模板:
Windows SDK 版本:10.0
平台工具集:Visual Studio 2019 (v142)
此编译器消息并不代表其自身,它伴随着另一条消息。鉴于您的代码,完整的输出是
warning C4100: 'argv': unreferenced formal parameter
message : see reference to function template instantiation 'int run_loop(int,const char_type *[])' being compiled
with
[
char_type=wchar_t
]
所以主要信息是argv
是一个未引用的形式参数的警告。编译器通过消息如何实例化模板为您提供额外的提示。如果您有一个模板的多个实例化并且警告仅在某些实例化时出现,这会很有用。
顺便说一句,修复该警告后,您仍然会收到相同的消息,因为 argc
和 ex
也未使用。删除所有三个名称或使用它们后,您不会再收到警告和消息。
我在 Visual Studio 2019 年构建 C++ 控制台应用程序期间注意到一条恼人的消息,Windows 10。我有一个生成消息的模板函数:
message : see reference to function template instantiation 'int run_loop<wchar_t>(int,const char_type *[])' being compiled
with
[
char_type=wchar_t
]
类似的代码编译正常,在 macOS 和 Ubuntu 上没有消息,但现在我将它移植到 Windwos 并看到这个。这不是错误或警告,只是一条信息消息。我开始注释掉函数内部的代码块,发现当我注释掉 std::exception
时,捕获消息消失了。此消息是什么意思,我应该如何处理?保持原样还是我应该以其他方式重新设计我的代码?以下是生成上述消息的简化代码片段:
#include <exception>
template<class char_type>
int run_loop(int argc, const char_type* argv[])
{
try
{
}
catch (const std::exception& ex)
{
}
return 0;
}
int wmain(int argc, const wchar_t* argv[])
{
return run_loop(argc, argv);
}
我的环境:
OS:Windows 10 Pro x64 版本 1909 OS 内部版本 18363.836
IDE: Visual Studio 2019 版本 16.6.0
具有默认设置的 C++ 中的 Win32 控制台应用程序模板:
Windows SDK 版本:10.0
平台工具集:Visual Studio 2019 (v142)
此编译器消息并不代表其自身,它伴随着另一条消息。鉴于您的代码,完整的输出是
warning C4100: 'argv': unreferenced formal parameter
message : see reference to function template instantiation 'int run_loop(int,const char_type *[])' being compiled
with
[
char_type=wchar_t
]
所以主要信息是argv
是一个未引用的形式参数的警告。编译器通过消息如何实例化模板为您提供额外的提示。如果您有一个模板的多个实例化并且警告仅在某些实例化时出现,这会很有用。
顺便说一句,修复该警告后,您仍然会收到相同的消息,因为 argc
和 ex
也未使用。删除所有三个名称或使用它们后,您不会再收到警告和消息。