"Mixed-Deklaration und code" Warnung ist es Wert Adressierung?
Habe ich erst vor kurzem aktiviert -pedantic
option auf gcc und jetzt habe ich über zwei oder drei Seiten des "ISO-C90 verbietet gemischte Deklaration und code" - Warnungen.
Mein Ziel mit diesem Projekt ist in der Lage zu implementieren es auf jeden mainstream - system mit einem c-compiler, so merke ich es wäre nicht klug, davon ausgehen, dass C99 unterstützt werden überall, aber ist es auch Wert, meine Zeit, um diese Warnungen?
Gibt es immer noch Systeme gibt, die mit c-Compilern, die keine Unterstützung gemischter Deklaration und code?
- -belehrende Warnungen sind, gut, pedantisch. Ich würde sagen, diese Warnungen sind eine Verschwendung von Zeit für praktische Zwecke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Naja, war/ist es Ihre Absicht, Ihren code schreiben, in C89/90 oder im C99?
Da dies die einzige Warnung, die Sie zu sein scheinen besorgt, anscheinend ist dein code wirklich geschrieben wurde in C89/90. Wenn es tatsächlich so ist, und Sie planen, zu bleiben, C89/90, dann würd ich mich an strenge C89/90 und verschieben Sie alle Deklarationen an den Anfang des Blocks.
Wenn auf der anderen Seite, sind Sie bereit-und umstellen zu C99, dann "verlegt" Erklärungen sind kein Thema mehr. Dann ist Ihre größte Sorge wird die Plattform/compiler-Unterstützung. MS Visual Studio, C-Compiler sind C89/90-Compiler. Ist das ein problem? (Wenn man bedenkt, dass GCC auf Windows-Plattformen verfügbar).
Wenn Sie wollen, um
-pedantic
über den C99-standard die option-std=c99
.Ich persönlich mag die älteren unmixed style, weil es macht es einfacher zu überprüfen visuell, welche Arten von Speicher die Funktion ist mit und entscheiden, was Sie brauchen könnten "free ()" -ing vor der Rückkehr.
Visual-Studio-C-compiler erlaubt nicht das mischen von Deklarationen und code. Microsoft wird wahrscheinlich nie voll C99 support in Visual Studio, C ist nicht wichtig genug in der Windows-Welt.
Ich bin mir nicht sicher, ich würde es ändern.
Allerdings, wenn Sie entscheiden, dass Sie möchten, es ist ziemlich einfach (vielleicht sollten Sie also); haben Sie Einfach alle Ihre Meldungen direkt nach dem Beginn eines code-block. Wenn Sie absolut müssen definieren, Sie später, verwenden Sie einen anderen verschachtelten code-block.
IIRC, Visual C++ gestattet keine gemischte Deklarationen und code in C-Modus.
Visual C++ wurde mit Entwicklungsrückstand im C99-Unterstützung im Allgemeinen. Die situation kann verbessert haben vor kurzem jedoch, und es kann möglich sein, kompilieren Sie Ihren code in C++ - Modus sowieso.
Ich würde zu beseitigen, die insbesondere warn-als Vermischung von code und Deklarationen ist nicht ein weit unterstütztes feature.
Eigentlich habe ich das gleiche problem mit einer Bibliothek, die ich Schreibe. Ich bin mit variadischen Makros, aber diese scheinen mehr unterstützt.
Um sicherzustellen, dass meine Bibliothek wirklich nutzbar, von anderen, ich werde es testen, mit wie viel Compilern kann ich. Ich habe es schon getan, die mit Visual C++ Express und Pelles C und ich werde versuchen, einige andere ( OpenWatcom, Mars C und lcc-Win32 zumindest).
Leider SourceForge nicht mehr bietet eine Compiler-farm, wie es zu tun, vor einigen Jahren, und ich kann nicht testen Sie es auf kommerziellen Unix-Compiler.