如何禁用 msvc c++ 编译器的“注意:”提示

Posted

技术标签:

【中文标题】如何禁用 msvc c++ 编译器的“注意:”提示【英文标题】:How to disable "note:" hints for msvc c++ compiler 【发布时间】:2019-01-24 15:09:21 【问题描述】:

我在没有 Visual Studio 的情况下直接使用 msvc cl.exe,并且希望有一种简单的方法来阅读警告和错误。我有相当复杂的模板设置,当我收到一些警告或错误时,我必须滚动编译器输出墙,例如

/internal/include/internal/scene/states/scene_events.h(32): error C2440: 'static_cast': cannot convert from 'game::events::random_event' to 'float'

/helpers/tsm/include/tsm/internal/actions.h(55): note: see reference to function template instantiation 'void game::internal::playing_event::receive_event::operator ()<FSM,OutState>(game::events::random_event &&,FSM &,InState &,game::internal::playing_event &) const' being compiled
    with
    [
        FSM=tsm::back::internal::machine_base<game::internal::scene_fsm>,
        OutState=game::internal::ready,
        InState=game::internal::ready
    ]
/helpers/tsm/include/tsm/internal/actions.h(54): note: while compiling class template member function 'void tsm::actions::internal::action_invocation<Action,FSM,Event,InState,OutState>::operator ()(Event &&,FSM &,InState &,OutState &) const'
    with
    [
        Action=game::internal::playing_event::receive_event,
        FSM=tsm::back::internal::machine_base<game::internal::scene_fsm>,
        Event=game::events::random_event,
        InState=game::internal::ready,
        OutState=game::internal::playing_event
    ]
....

等等等等。是否有任何选项可以禁用“注意:”输出? 我在official docs 中没有找到任何内容

【问题讨论】:

学会喜欢这些笔记。他们有很大的帮助。 我爱他们,他们在某些情况下很有帮助。但在某些情况下,我不在乎它们。问题不是喜欢或讨厌它们,而是可以选择禁用它们) 没有。这就是为什么你必须爱他们。 gcc 有-Wfatal-errors,它将在第一个错误处停止。不确定 MSVS 是否有类似的东西。 【参考方案1】:

很抱歉成为坏消息的承担者,但无法禁用编译器诊断中的这些注释输出。

有(曾经)一些过滤 3rd 方工具,但讨论这些将是题外话。

【讨论】:

我不认为 3rd 方工具在答案中是题外话,作为所问问题的解决方案。只是直接询问工具推荐是题外话。 你当然可以推荐一些工具来解决这个问题。 斯德哥尔摩综合症。会喜欢的。至于工具 - 我对 awk 没意见:gawk '/^\s*with$/if(n)s=1 n=/note:/?1:0 !(n||s); /]/s=0'

以上是关于如何禁用 msvc c++ 编译器的“注意:”提示的主要内容,如果未能解决你的问题,请参考以下文章

C++:禁用隐式转换警告

如何验证编译时在 msvc 2010 c++ 项目中是不是正确设置了编译器选项?

如何使用 MSVC 在 C++ 中定义外部 C 结构返回函数?

在 Qt Creator 中禁用编译器警告项目范围(使用 MSVC 时)

在 MSVC C++ 中强制循环展开

MSVC _penter 和 _pexit 钩子可以在每个函数的基础上禁用吗?