GCC'yi kullanarak, -Wframe'den daha büyük olandan muaf olan bir dizi işlev belirtmek mümkün mü? (Örneğin, ana.) Bu amaçla pragmas ileGCC ile, her bir işlev temelinde daha büyük -Wframe'i daha büyük ölçüde devre dışı bırakabilir miyim?
cevap
GCC malzemeleri size:
Şuhttp://gcc.gnu.org/onlinedocs/gcc-4.5.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
o tarafından bir dosya üzerinde yapmak gibi görünüyor çünkü, ne istediğinizi tam olarak yapmayacağım
http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
Sen GCC diagnostic pragma kullanabilirsiniz: o farkında bağlam sanki dosya bazında, ancak gcc (4.6) bir sonraki sürümünde, görünür.
Bu biraz eski ama aynı yanıt arıyor karşıya geldi, bu yüzden ben (deneme yanılma yoluyla bulunabilir) benim çözüm sonrası düşündüm:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wframe-larger-than="
void func()
{ int x[2000] = {}; printf("%d",x[1]); }
#pragma GCC diagnostic pop
çalışıyor gibi görünüyor. Bazı nedenlerle, diagnostic warning
'u kullanmaya çalışmadı. Uyarıyı oluşturan yığın boyutunu değiştirmek mümkün görünmüyor. Ayrıca, sonunda = = gerekir. Belki sıradaki adam bunu bulacak ve biraz zaman kazanacaktır :). Bu 4.6.2 (bir ARM çapraz derleyicide).
John
İşlevsel olarak işlev temelinde çalışabilir. Dokümanlardan: "GCC, her pragma'nın konumunu izler ve kaynak dosyada bu noktadan itibaren duruma göre teşhisler yapar. Bu nedenle, bir satırdan sonra ortaya çıkan pragmalar bu satırın neden olduğu teşhisleri etkilemez." –
@Carl: Aslında, bu dokümanlar şu anki geliştirme sürümü için (4.6), verdiğim bağlantıyı kontrol ederseniz 4.5 için geçerli değil. –
oh tamam. Aslında bu belgede herhangi bir sürüm görmedim. Açıklama için teşekkürler. –