Mam bardzo duży program, który kompiluje z gcc bez ostrzeżeńCzy istnieje jakiś sposób, aby umożliwić for (int i = 0;. ... w gcc bez konieczności włączania trybu c99
Jeśli zwracam tryb c99 --std = c99 w linii poleceń, daje ogromną liczbę ostrzeżeń i błędów.
Ale kocham idiomu for(int i=0; i<20; i++){ code }
zamiast {int i; for (i=0; i<20; i++){ code }}
Czy istnieje jakiś sposób, aby powiedz gcc, aby zezwolić na to i tylko to?
Czy jest jakiś sposób włączenia trybu C99 w poszczególnych funkcjach, nad którymi pracuję? Coś jak
#pragma c99 on
for(int i=0; i<99; i++)
{
code
}
#pragma c99 off
ANSI C zabrania mieszankę deklaracji i sprawozdań z jakiegoś powodu . Powinieneś zadeklarować wszystkie swoje zmienne u góry swojej funkcji i to wszystko. Jeśli boisz się ich utracić lub zmieszać, funkcja ma zbyt wiele linii i należy ją posegmentować. – Eregrith
Co stanie się, gdy spróbujesz skompilować swój kod w trybie 'gnu99' (w przeciwieństwie do' c99')? – NPE
Ten komentarz oznacza "głosuj przeciwko" Eregrithowi. Istnieją dobre powody, dla których C89 pozwala definiować zmienne u góry * dowolnego * bloku, a nie tylko ciało funkcyjne, jak wymaga tego przewodnik stylu Eregritha. Istnieją również dobre powody, dla których kilka innych języków i bardzo niewiele języków współczesnych ma taki wymóg. Nie podążaj za stylem Eregritha, nawet w C89. Powód, dla którego C89 zabraniał mieszać definicje i inne stwierdzenia, jest dość słaby - w dużej mierze był historyczny w 1989 roku i miał do czynienia z ciężkimi, starymi kompilatorami, które w prosty sposób układały ramki stosów. –