Выборочно отключите предупреждения GCC только для части единицы перевода?

Это рабочий код в c ++ для вышеуказанной проблемы.

#include<iostream>
#include<cstdio>
#include<algorithm>

using namespace std;

struct pairs{
int x;
int y;  
};

bool myf(struct pairs p1,struct pairs p2){
return p1.x<p2.x;   
}

int lis(struct pairs a[],int n){
sort(a,a+n,myf);

int lis[n];

for(int i=0;i<n;i++)
    lis[i]=1;

for(int i=1;i<n;i++){

    for(int j=0;j<i;j++){
        if((a[j].y<a[i].y)&&(lis[i]<lis[j]+1))
            lis[i]=lis[j]+1;
    }
}

int max=lis[0];

for(int i=1;i<n;i++){
    if(max<lis[i])
        max=lis[i]; 
}

return max;
}

int main()
{
struct pairs arr[100];
int n;
cin>>n;
for(int i=0;i<n;i++){
    cin>>arr[i].x>>arr[i].y;    
}

int max=lis(arr,n);
cout<<max<<"\n";

return 0;
}
82
задан Trevor Boyd Smith 2 April 2018 в 16:15
поделиться

3 ответа

Это возможно в GCC , начиная с версии 4.6, или примерно в июне 2010 года в магистрали.

Вот пример:

#pragma GCC diagnostic push
#pragma GCC diagnostic error "-Wuninitialized"
    foo(a);         /* error is given for this one */
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wuninitialized"
    foo(b);         /* no diagnostic for this one */
#pragma GCC diagnostic pop
    foo(c);         /* error is given for this one */
#pragma GCC diagnostic pop
    foo(d);         /* depends on command line options */
93
ответ дан 24 November 2019 в 09:13
поделиться

Самая близкая вещь - прагма диагностики GCC , #pragma GCC диагностика [предупреждение | ошибка | проигнорировано] "-в любом случае" .

35
ответ дан 24 November 2019 в 09:13
поделиться

Я сделал что-то подобное. Для стороннего кода я не хотел видеть никаких предупреждений вообще. Таким образом, вместо того, чтобы указывать -I / Path / to / libfoo / include , я использовал --isystem / путь / к / libfoo / включает . Это делает компилятор рассматривать эти файлы заголовка как «заголовки системы» с целью предупреждений, и до тех пор, пока вы не включаете -Wsystem-заголовки , вы в основном безопасны. Я все еще видел несколько предупреждений утечки оттуда, но она сокращает большую часть мусора.

Обратите внимание, что это только помогает вам, если вы сможете изолировать насторонний код, в который включите-каталог. Если это просто подмножество вашего собственного проекта или смешана с другим кодом, вы не повезете.

32
ответ дан 24 November 2019 в 09:13
поделиться