Archiv verlassen und diese Seite im Standarddesign anzeigen : deklarieren bzw., definieren von Variablen...
Matrix316
2004-05-27, 21:11:04
Bei Borland C++ Builder 5 hab ich festgestellt, dass die Variablen bei C (wenn das source File die Endung "c" hat) in Funktionen am Anfang deklariert/definiert werden müssen (ansonsten gibts Fehler), während bei C++ (das File die Endung cpp )es auch mittendrin sein kann (z.B. in einer Schleife oder sonst wo).
Interessant ist, dass es bei Visual C++ immer egal ist.
Ist das jetzt eine C/C++ Sache oder hängt das vom Compiler ab wo Variablen deklariert/definiert müssen?
ethrandil
2004-05-27, 21:35:07
Ich meine gehört zu haben, dass im "Ur-C" die Variablen am Anfang definiert werden müssen.
MS war noch nie dafür bekannt sich total an gewisse Standards zu halten, daher fallen die schon mal raus ;).
Allerdings gibt es, glaube ich, einen neuen C-Standard, der die Deklaration auch mittem im Code erlaubt. Vielleicht musst du bei deinem Compiler dafür auch ein bestimmtes Flag setzen.
- Eth
Matrix316
2004-05-27, 21:48:37
Ur C = ANSI C oder gibts da noch Unterschiede? :kratz2:
Es gibt verschiede ANSI-C-Standards, der neuste ist soweit ich weiß der von 1999, genannt C99.
In C99 kann man überall Variablen erzeugen.
D-Swat
2004-05-27, 22:40:59
Bei Visual C++ kannst du in den Projekt Eigenschaften einstellen, ob die Dateien als C oder C++ interpretiert werden sollen
und dann auch nach den entsprechenden Regeln kompiliert werden.
Als default ist dort C++ eingestellt, deswegen kannst die Variablen deklarieren wo du willst.
Matrix316
2004-05-28, 20:10:01
Also ist es ein C / C++ Unterschied?
Wobei folgendes komisch ist:
Beispiel 1 gibt ein Fehler (mit Borland c) :
switch (irgendwas)
{
case 1:
int i;
break;
}
Beispiel 2 gibt keinen Fehler (mit Borland c) :
switch (irgendwas)
{
case 1:
{
int i;
}
break;
}
Warum? :kratz: Oder wird der Block, dann quasi als neue "Funktion" oder Bereich angesehen der unabhängig vom Rest ist?
Exxtreme
2004-05-28, 20:55:54
Original geschrieben von Matrix316
Warum? :kratz: Oder wird der Block, dann quasi als neue "Funktion" oder Bereich angesehen der unabhängig vom Rest ist?
So ähnlich ist das tatsächlich. Die Variable i ist nur innerhalb der Klammern gültig. Der Compiler von MS sieht wohl alles als C++-Code an, während der Borland-Compiler da Unterschiede macht.
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.