c++ G++中未附加到错误或警告的“注解”的含义是什么

a2mppw5e  于 2023-01-15  发布在  其他
关注(0)|答案(2)|浏览(146)

在编译一些代码时,我收到了来自g++ 4.3.4的以下奇怪消息:

...include/boost/property_tree/stream_translator.hpp: In member function 'typename
boost::enable_if<boost::property_tree::detail::is_translator<Translator>, Type>::type
boost::property_tree::basic_ptree<Key, Data, KeyCompare>::get_value(Translator) const
[with Type = ObjectType, Translator = boost::property_tree::stream_translator<char,
std::char_traits<char>, std::allocator<char>, ObjectType>, Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, Data = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, KeyCompare =
std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >]':
...include/boost/property_tree/stream_translator.hpp:189: note: 'e' was declared here

附近没有任何警告或错误,而且我以前从未在g++中看到过这样的事情。有人知道发生了什么吗?

kxkpmulp

kxkpmulp1#

在本例中,GCC试图提供发生进一步错误的上下文,您只显示了一个片段,而不是完整的错误,但这就是发生的情况。
这通常发生在模板扩展的过程中。GCC试图提供扩展发生的上下文,因此您有更多的信息来解决这个问题。当您嵌套和/或复杂的模板时,这些“注解”会非常有用。
修复这些错误的最简单方法是自上而下地工作,纠正您看到的第一个错误,然后移动到下一个错误。

pgvzfuti

pgvzfuti2#

我知道这是一个老主题,但是在升级到wxWidgets(从3.0升级到3.1)和g++(现在运行g++ 5.3.1)的新版本后,我突然看到了同样的事情。
在“note”之前是一个警告,提醒注意一个使用新版本wxWidgets中标记为deprecated的构造函数创建的类。该注解似乎只是显示了声明该构造函数的deprecated版本的位置:

/home/uwake/programs/wx/cuds_db/gp/gpSimple.cpp:157:93: warning:
’wxFont::wxFont(int, int, int, int, bool, const wxString&, wxFontEncoding)’
is deprecated: use wxFONT{FAMILY,STYLE,WEIGHT}_XXX constants
[-Wdeprecated-declarations]
     fnt = wxFont ( 12, wxFONTFAMILY_ROMAN, wxNORMAL, wxNORMAL, false, "Times New Roman" );
                                                                                         ^
In file included from /usr/local/include/wx-3.1/wx/font.h:524:0,
             from /usr/local/include/wx-3.1/wx/window.h:23,
             from /usr/local/include/wx-3.1/wx/wx.h:38,
             from /usr/local/include/wx-3.1/wx/wxprec.h:42,
             from ./wx_pch.h:14,
             from <command-line>:0:
/usr/local/include/wx-3.1/wx/gtk/font.h:89:5: note: declared here
 wxFont(int size,
 ^

在我的例子中,我通过更改为不同的构造函数消除了警告和注解(尽管不是警告建议的构造函数,它并不真正适合我的需要)。

相关问题