"Gemischte Deklaration und Code" Warnung, lohnt es sich zu adressieren?

8

Ich habe vor kurzem -pedantic Option auf gcc aktiviert und jetzt habe ich ungefähr zwei oder drei Seiten von "ISO C90 verbietet gemischte Deklaration und Code" Warnungen.

Mein Ziel bei diesem Projekt ist es, es auf jedem Mainstream -System mit einem AC-Compiler zu implementieren, daher ist es nicht ratsam anzunehmen, dass C99 überall unterstützt wird, aber es ist lohnt es sich sogar, diese Warnungen anzugehen?

Gibt es immer noch Systeme mit c-Compilern, die gemischte Deklaration und Code nicht unterstützen?

    
Graphics Noob 29.12.2009, 17:42
quelle

6 Antworten

6

Nun, war / ist es deine Absicht, deinen Code in C89 / 90 oder in C99 zu schreiben?

Da dies die einzige Warnung ist, um die Sie anscheinend besorgt sind, wurde Ihr Code offensichtlich in C89 / 90 geschrieben. Wenn es wirklich so ist und Sie vorhaben, bei C89 / 90 zu bleiben, dann bleibe ich bei C89 / 90 und verschiebe alle Deklarationen an den Anfang des Blocks.

Wenn Sie dagegen bereit sind und auf C99 umsteigen möchten, sind "unangebrachte" Deklarationen kein Problem mehr. Dann wird Ihr Hauptanliegen die Plattform / Compiler-Unterstützung. MS Visual Studio C-Compiler sind C89 / 90-Compiler. Ist das ein Problem? (In Anbetracht dessen, dass GCC auf Windows-Plattformen verfügbar ist).

    
AnT 29.12.2009, 18:13
quelle
5

Wenn Sie -pedantic über den C99-Standard sein wollen, fügen Sie die Option -std=c99 hinzu.

Persönlich mag ich den älteren sortenreinen Stil, weil er es einfacher macht, visuell zu überprüfen, welche Arten von Speicher die Funktion verwendet, und zu entscheiden, was vor dem Zurückkehren eventuell benötigt wird ().

    
mlibby 29.12.2009 21:46
quelle
2

Der Visual Studio C-Compiler erlaubt das Mischen von Deklarationen und Code nicht. Microsoft wird Visual Studio wahrscheinlich niemals vollständige C99-Unterstützung hinzufügen; C ist in der Windows-Welt nicht wichtig genug.

    
JesperE 29.12.2009 20:32
quelle
1

Ich bin mir nicht sicher, ob ich das ändern würde.

Wenn Sie jedoch entscheiden, dass Sie wollen, ist es ziemlich einfach (so sollten Sie vielleicht); Habe einfach alle deine Deklarationen direkt nach dem Beginn eines Codeblocks. Wenn Sie sie später unbedingt definieren müssen, verwenden Sie einen anderen geschachtelten Codeblock.

    
rmn 29.12.2009 17:48
quelle
1

IIRC, Visual C ++ erlaubt keine gemischten Deklarationen und Code im C-Modus.

Visual C ++ ist im Allgemeinen in der C99-Unterstützung zurückgeblieben. Möglicherweise hat sich die Situation in letzter Zeit jedoch verbessert, und es ist möglicherweise möglich, den Code im C ++ - Modus zu kompilieren.

    
ZoogieZork 29.12.2009 18:04
quelle
0

Ich würde diese spezielle Warnung eliminieren, da das Mischen von Code und Deklarationen kein weit verbreitetes Feature ist.

Eigentlich habe ich das gleiche Problem mit einer Bibliothek, die ich schreibe. Ich verwende variadic Makros, aber diese scheinen mehr unterstützt zu werden.

Um sicherzustellen, dass meine Bibliothek wirklich von anderen genutzt werden kann, werde ich sie mit so vielen Compilern testen, wie ich kann. Ich habe es bereits mit Visual C ++ Express und Pelles C gemacht und ich werde etwas anderes versuchen (OpenWatcom, Mars C und lcc-Win32 mindestens).

Leider stellt SourceForge nicht mehr eine Compiler-Farm zur Verfügung, wie sie es vor einigen Jahren getan hat, und ich kann es nicht auf kommerziellen Unix-Compilern testen.

    
Remo.D 30.12.2009 08:00
quelle

Tags und Links