Это рабочий код в 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;
}
Это возможно в 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 */
Самая близкая вещь - прагма диагностики GCC , #pragma GCC диагностика [предупреждение | ошибка | проигнорировано] "-в любом случае"
.
Я сделал что-то подобное. Для стороннего кода я не хотел видеть никаких предупреждений вообще. Таким образом, вместо того, чтобы указывать -I / Path / to / libfoo / include
, я использовал --isystem / путь / к / libfoo / включает
. Это делает компилятор рассматривать эти файлы заголовка как «заголовки системы» с целью предупреждений, и до тех пор, пока вы не включаете -Wsystem-заголовки
, вы в основном безопасны. Я все еще видел несколько предупреждений утечки оттуда, но она сокращает большую часть мусора.
Обратите внимание, что это только помогает вам, если вы сможете изолировать насторонний код, в который включите-каталог. Если это просто подмножество вашего собственного проекта или смешана с другим кодом, вы не повезете.