微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何删除特定警告gcc

如何解决如何删除特定警告gcc

我有一个特定的警告,我想删除/隐藏然后立即启用它。你知道如何在不删除所有其他警告的情况下做到这一点吗?

这是我收到的警告

warning: enumeration value 'EtatCCSortie' not handled in switch [-Wswitch]

而且我不需要在开关中实际使用该状态(它是一个状态机)。我有一种方法可以不再收到此警告,方法是将状态添加到开关中,如下所示:

while (etatsImprimanteCasImpressionPeriodique != EtatIPSortie)
{
         switch (etatsImprimanteCasChangementCartouche)
         {
               ....
               case EtatCCSortie:
               break;

但我不必添加它,因为它永远不会执行(虽然!=)。这就是为什么我正在寻找一种方法来禁用此特定警告,然后在此切换后立即启用它。

Ps:我知道警告的重要性,我只需要一种方法删除它。

解决方法

使用diagnostic pragmas

enum somenum {
    EtatIPSortie,EtatCCSortie,};
int etatsImprimanteCasImpressionPeriodique;
enum somenum etatsImprimanteCasChangementCartouche;

void func() {
    while (etatsImprimanteCasImpressionPeriodique != EtatIPSortie)
    {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wswitch"
            switch (etatsImprimanteCasChangementCartouche)
            {
                case EtatCCSortie:
                break;
            }
#pragma GCC diagnostic pop
    }
}
,

使用:

#pragma GCC diagnostic ignored "-W<replace_this_with_the_warning>"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。