2010-02-20 3 views
5

Fast jedes (relativ) neue Buch über c-Programmierung, das ich gesehen habe, scheint sich nicht an den C99-Standard zu halten, oder sie decken es in einem extra Kapitel ab. Ausgehend von einem Java-Hintergrund hat der C99-Standard die Migration (nun, noch immer migrierend ^^) für mich viel einfacher gemacht, und dies gilt wahrscheinlich auch für andere Sprachen.Warum entsprechen neue C-Bücher nicht dem C99-Standard?

Es scheint, als hätte C99 die meisten C-Entwickler noch nicht erreicht. Aber warum?

+0

Bitte geben Sie Beispiele. Welche neuen Bücher liest du? –

Antwort

13

Kurze Antwort: Compiler-Unterstützung ist langsam zu installieren und c Programmierer sind eine konservative Menge, die ihr Verhalten langsam ändern.

+0

Für eine kurze Antwort würde ich sagen, dass es ziemlich gut ist. – ChaosPandion

+2

Auch eine clevere Menge, und nicht angesaugt :) –

3

Das Risiko, zu einem neuen Compiler auf einer bestehenden Codebasis zu wechseln, ist allgemein unbekannt, aber es kann ziemlich schmerzhaft sein, es ist am klügsten, nur zu wechseln, wenn Sie Monate Zeit haben, irgendwelche Bugs/Änderungen auszumerzen. Und für wirklich alte Code-Basen, manchmal ist es am weisesten, niemals zu wechseln.

würde ich bereit sein, die meisten Projekte zu wetten, dass die C verwenden, sind nicht bereit, überhaupt zu C99 zu wechseln, da gibt es kaum den Kopf für eine große bestehenden Code-Basis und ziemlich viel Potential Nachteil. Ich arbeitete in einem großen Softwarehaus, das die Compiler in den Source-Tree direkt neben dem Code überprüfte und niemals Compiler für ein Produkt wechseln würde.

+0

Aber welche Compiler verwenden sie, um diese eingecheckten Compiler zu kompilieren? :-) –

+0

@R: Die Compiler waren binäre Checkins, keine Quell-Checkins. –

11

Ich vermute stark, dass es hauptsächlich deshalb ist, weil MSVC nicht versucht, C99 zu unterstützen, und sehr wahrscheinlich nie. Es gibt ein paar eingebettete Compiler im selben Boot, aber sie sind kaum üblich genug, um sehr individuell zu sein. AFAIK alle anderen versuchen zumindest, C99 so weit wie möglich zu implementieren.

Es gibt in der Praxis nicht viel Grund, ausgewählte Funktionen von C99 nicht zu verwenden, aber wenn Sie einen C-Standard lernen und schreiben, und nur einen, dann muss es C89 sein.

Außerdem ist es wahrscheinlich ziemlich schwierig und verwirrend, einen einleitenden C-Text zu schreiben, der mit den Worten beginnt: "Okay, es gibt zwei verschiedene Standards, und ich werde drei verschiedene Textfarben verwenden: eine für C89, eine für C99 und eins für beide ". Es ist wahrscheinlich auch schwieriger, für ein ganzes Buch über C99 zu schreiben und dann viel von dem, was Sie in einem Anhang über C89 gesagt haben, "zurückzunehmen", als über C89 zu schreiben und dann in einem Anhang über C99 hinzuzufügen .

Alle Spekulationen, obwohl. Wirklich müssen Sie die Autoren der Bücher fragen, die Sie lesen (oder vielleicht in einigen Fällen gegen Ihre Programmierinstinkte gehen, und lesen Sie das Vorwort;

+0

Ich kaufe nicht das Argument, dass, wenn Sie nur zu einem Standard lernen und schreiben, es C89 sein muss. gcc unterstützt das Generieren von Code für nahezu jede Plattform mit möglicher Relevanz. Warum also nicht einfach den modernen Standard C99 verwenden? –

+1

@R. Wenn du eine bessere Erklärung hast, mach weiter. Ich sage nicht, dass all diese Leute * vernünftig * sind, Microsofts Compiler für C zu verwenden, ich sage nur, dass es genug davon gibt, um einen Einfluss zu haben. Als ich den "portable C-Code" geschrieben habe, hatte ich keine Möglichkeit, bestimmten Kunden zu sagen, dass sie Compiler wechseln oder meine Bits separat vom Rest ihres Projekts kompilieren sollten. Also habe ich C89 benutzt. Es ist ein bisschen so, als müsste man Webseiten schreiben, die in IE6 funktionieren - es gibt nur so viel Vorteil, wenn man einem Teil der Zuschauer sagt, dass sie Idioten sind. Zumindest ist C89 nicht wirklich schrecklich. –

Verwandte Themen