9
votes

"Déclaration mixte et code" AVERTISSEMENT, vaut-t-il la peine d'être adressée?

J'ai récemment activé l'option -pedantic sur GCC et que vous avez maintenant environ deux ou trois pages de "ISO C90 interdit des avertissements de déclaration mixte et de code".

Mon objectif avec ce projet est de pouvoir le déployer sur n'importe quel système ordinateurs avec CAC compilateur, donc je me rends compte qu'il ne serait pas sage de supposer que C99 sera soutenu partout, mais est Cela vaut même mon temps pour répondre à ces avertissements?

Y a-t-il des systèmes immobiles avec des compilateurs C qui ne supportent pas la déclaration et le code mixtes?


1 commentaires

-pedantic augmente des avertissements qui sont, bien, pédant. Je dirais que ces avertissements sont une perte de temps à des fins pratiques.


6 Réponses :


1
votes

Je ne suis pas sûr de le changer.

Cependant, si vous décidez que vous voulez, c'est assez facile (alors peut-être que vous devriez); Avoir toutes vos déclarations juste après le début d'un bloc de code. Si vous devez les définir plus tard, utilisez un autre bloc de code imbriqué.


0 commentaires

1
votes

IIRC, Visual C ++ n'autorise pas les déclarations mixtes et le code en mode C.

Visual C ++ est en retard dans la prise en charge de C99 en général. La situation peut être améliorée récemment et il peut être possible de compiler votre code en mode C ++ de toute façon.


0 commentaires

7
votes

Eh bien, était-ce que votre intention d'écrire votre code en C89 / 90 ou en C99?

Comme il s'agit du seul avertissement que vous semblez vous préoccuper, apparemment, votre code a été réellement écrit en C89 / 90. Si c'est effectivement ainsi et que vous envisagez de vous coller avec C89 / 90, je m'engagerais à Strict C89 / 90 et à déplacer toutes les déclarations au début du bloc.

Si, d'autre part, vous êtes disposé et envisagez de passer à C99, les déclarations «égarées» ne sont plus un problème. Ensuite, votre principale préoccupation devient le support de la plate-forme / du compilateur. Les compilateurs de MS Visual Studio C sont des compilateurs C89 / 90. Est-ce un problème? (Considérant que GCC est disponible sur les plates-formes Windows).


2 commentaires

Je ne vise pas à me conformer à une norme spécifique, je veux juste être convaincu que mon code compilera sur tout compilateur C ordinary


Dans ce cas, la réponse est la suivante: non, il ne compilera pas sur tout compilateur de navigateur. Le compilateur MS Visual Studio adhère à C89 / 90 et il ne compilera pas ce code.



2
votes

Le compilateur C-Visual Studio C n'autorise pas les déclarations et le code de mélange. Microsoft n'aimera probablement jamais l'appui complet C99 à Visual Studio; C n'est pas assez important dans le monde des fenêtres.


0 commentaires

5
votes

Si vous souhaitez être -pedantic à propos de la norme C99 Ajout de l'option -std = C99 . .

Personnellement, j'aime le plus ancien style non mélangé, car il est plus facile de vérifier visuellement quels types de mémoire la fonction utilise et décident de ce qui pourrait avoir besoin de libérer () - ing avant de retourner.


0 commentaires

0
votes

J'élimine cet avertissement particulier en tant que code d'intermaxing et déclarations n'est pas une fonctionnalité largement primordiale.

En fait, j'ai le même problème avec une bibliothèque que j'écris. J'utilise des macros variadiques mais ceux-ci semblent être plus pris en charge.

Pour vous assurer que ma bibliothèque sera vraiment utilisable par les autres, je vais le tester avec autant de compilateurs que je peux. Je l'ai déjà fait avec Visual C ++ Express et Pelles C et je vais essayer d'autres (OpenWatCom, Mars C et LCC-Win32 au moins).

Malheureusement, Sourceforge ne fournit plus une ferme compilatrice telle qu'elle faisait il y a quelques années et je ne peux pas le tester sur des compilateurs UNIX commerciaux.


0 commentaires