2011-01-11 6 views

Respuesta

10

CCG le suministra pragmas para este propósito:

http://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

Actualmente no va a hacer exactamente lo que quiere, ya que parece que hacerlo en un archivo base de archivos, pero en la próxima versión de gcc (4.6), parece como si es sensible al contexto:

http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas

+0

Puede funcionar función por función. De los documentos: "GCC realiza un seguimiento de la ubicación de cada pragma y emite diagnósticos de acuerdo con el estado a partir de ese punto en el archivo de origen. Por lo tanto, los pragmas que ocurren después de una línea no afectan los diagnósticos causados ​​por esa línea". –

+2

@Carl: en realidad, esos documentos son para la versión de desarrollo actual (4.6), por lo que no es aplicable a 4.5, si revisas el enlace que di. –

+0

oh ok. No vi ninguna versión en ese documento, en realidad. Gracias por la aclaración. –

1

Esto es un poco viejo, pero me encontré con él en busca de la misma respuesta, así que pensé que había puesto mi solución (que se encuentra por ensayo y error):

#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wframe-larger-than=" 

void func() 
{ int x[2000] = {}; printf("%d",x[1]); }  

#pragma GCC diagnostic pop 

parece funcionar. Por alguna razón, intentar usar diagnostic warning no funcionó. No parece posible cambiar el tamaño de la pila que genera la advertencia. Además, necesitas el = al final. Tal vez el próximo chico lo encuentre y se ahorre algo de tiempo :). Esto es 4.6.2 (en un compilador cruzado ARM).

John

Cuestiones relacionadas