Sai come faccio a ignorare lo splint dove dichiaro le mie variabili?Come posso ignorare lo splint dove dichiaro le mie variabili?
so che la vecchia scuola c dice di dichiarare le variabili destra al a partire in ogni funzione, ma dato che io sono una persona cattiva mi piace dichiarare le cose vicino a dove li uso. Un buon esempio è quello di inserire int i; subito prima di for (i = 0; ...).
Facciamo un esempio molto semplice
#include <stdio.h>
int main()
{
printf("Hello splint test\n");
int i;
for(i=5;i>0;i--)
{
printf("%2d...\n",i);
}
return 0;
}
Qui stecca e la maggior parte vecchi compilatori C vorrebbero spostare int i; su una riga, o per inserire {} la dichiarazione e il ciclo for.
E ora alla domanda, come posso disattivare questo controllo? Ma mantenere gli altri assegni è buono?
Grazie Johan
Nota 1: Uso già avvertimenti gcc (vedi sotto) come prima linea di difesa off, e valgrind come secondo. ma sto pensando di aggiungere stecca alla mia lista di cose che potrebbero controllare la mia stupidità ;-) Ma questo controllo è solo fastidioso,
Le avvertenze gcc che uso: -Wall -W -Wextra -Wconversion - Wshadow -Wcast-qual -Wwrite-stringhe -Werror
Nota 2: Conosco i potenziali problemi di portabilità che potrebbero derivare da questo cattivo comportamento. Ma ritengo che aumenti la leggibilità, ovvero non sia necessario saltare su e giù per cercare questo tipo di dichiarazioni che sono più preziose (e questo possiamo discuterne in un'altra discussione).
Aggiornamento: Un po 'più di informazioni, ho messo il codice di cui sopra in un file chiamato main.c. piattaforma utilizzata è di Ubuntu 8.04 e gvim come redattore, e questo è l'uscita dalla stecca quando l'eseguo:
splint +gnuextensions main.c
Splint 3.1.1 --- 03 Nov 2006
Command Line: Setting +gnuextensions redundant with current value
main.c:8:8: Parse Error. (For help on parse errors, see splint -help
parseerrors.)
E questo apre altre 2 domande che non ho pensare prima.
"ridondante con valore corrente", quale valore attuale?
Perché è un errore di analisi e non un avviso?
Aggiornamento:: C'è una possibilita 'di patch di stecca per sostenere questo problema, non ho provato questo, ma ancora, ma penso che sia la soluzione.
Mentre ci si trova, è necessario dichiarare l'int all'interno dell'istruzione for. – starblue
Stai ricevendo un fastidioso avviso o un errore del parser? –
ed è lo spazio tra "int" e "i" che interrompe lo splint? – Johan