C99 != Ansi-c ?

cuddlytux

cuddlytux

Alles außer unix ist sc..
Hallo!

Ich stecke grade in den Kinderschuhen beim lernen von C und bin gerade über folgendes gestolpert:

Zitat:
Code:
When writing C code, use only C comments (beginning with "/*" and ending 
with "*/"), and don't use C++-style comments ("//"). Although many C compilers 
understand C++ comments, others don't, and the ANSI C standard does not 
require that C++-style comments be processed as comments.

http://www.gtk.org/tutorial/c2617.html

Hat die ANSI C99 nicht zum Standart gemacht?
Spricht also man, wenn man ANSI-C sagt, also von C89?
 
Hat die ANSI C99 nicht zum Standart gemacht?

An Standards halten sich C-compiler Hersteller nur bedingt.

Wenn man von Ansi-C spricht, meint man das Ansi-C wie es z.B. bei wikipedia erklärt wird.
 
An Standards halten sich C-compiler Hersteller nur bedingt.
Das weiß ich ;-). Aber ich würde halt gerne wissen, was das überall genannte ANSI-C eigentlich ist. Bei wikipedia werden unter ANSI-C nur die verschiedenen C-Standarts erklärt (K&R-C, C89, C90, C99).
 
Jeder dieser C-Standards trägt der Entwicklung in der Compilerherstellung und den gemeinhin gültigen Notationsregeln Rechnung.
Das heißt jeder nach 1989 definierte Standard IST eine Abweichung von der ursprünglich 'reinen Lehre', also dem ursprüglichen C-Standard, entwickelt von Kernighan und Ritchie.

Dennoch C89, C9x usw. sind alles ANSI-Standards, daher ist
die Aussage C99!=ANSI nicht richtig

Am Ehesten sieht man dass an einem Beispiel:

Allgemein hin bekannt dürfte z.Bsp. sein, dass die "reine Lehre" Kernighans und Ritchies eine Verwendung von Bezeichnern OHNE vorrangegangene Deklaration ausschließt. D.h., folgender Ausdruck würde schon einen Compilerfehler verursachen:

Code:
int main()
{

     for(int iCount=0;iCount<10;iCount++)
           ;

return 0;
}

... wärend bei Verwendung eines späteren Standards, und ganz generell in C++-Applikationen eben jenen Weg gehen kann.
Ist man aber an die älteren Standards gebunden, oder möchte Konformität zu C89 sicherstellen, so ändert man das Beispiel folgender Weise ab:

Code:
int main()
{
   
     int iCount;
     for(iCount=0;iCount<10;iCount++)
           ;

return 0;
}

Ein ähnliches Problem liegt also vor bei der AUsgabe die Du gepostet hast...
Um einen bestimmten Standard für das Compilat ganz explizit zu verwenden gibst Du dann beim gcc die entsprechende Option an.

Code:
gcc -std=C89 -Wall -o ./myApp myApp.c

Dies veranlasst den GNU/Compiler aus dem Quellcode von myApp.c ein Kompilat nach Ansi-C89 zu erstellen, und gleichzeitig Warnungen auszugeben, wenn die Notation von dem gängigen Dialektschema abweicht.


MfG
 
Zuletzt bearbeitet:

Ähnliche Themen

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Windows clients können nicht mehr auf lange laufendes System zugreifen

dovecot und postfix Konfiguration Problem

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

NagiosGrapher 1.7.1 funktioniert nicht

Zurück
Oben