Null = 0 ????

@ Lirion

Mein Borland C 3.0 meckert auch nicht...

Eigentlich ist es bei mir ja auch ein "richtiger" Zeiger, der auf den Anfang zeigt. Aber mit dem einfachen Beispiel ging's leichter zu erklären und bei Borland machte das keinen Unterschied...
 
@ Vaethischist:

Ich weiß ja eben nicht, ob das initialisiert ist. Hab nur ein paar Infos, was meine Progs machen sollen, und deren Funktionsköpfe.

Selbst wenn er initialisiert wurde, leider springt er ja auch raus, wenn der erste Wert 0 ist!!! Das ist das Problem!! Sonst würde das mit dem NULL ja klappen!!!!!
 
Ok...ich glaube, wir nähern uns langsam dem Kern der Sache. ;)

Wenn Du den Zeiger auf das Feld mit den Werten bekommst, dann ist der auf jeden Fall initialisiert. Das Prob ist, was in dem Feld nun drinne steh.

Du hast ja einen definierten Wertebereich für das Wertefeld. Die sollen alle im short-bereich (also -2^15 bis 2^15-1) sein. Nehmen wir mal an, es ist was schief gegangen. Dann würde eines der Felder möglicherweise auf einen Wert zeigen, der nicht in diesem Wertebereich liegt. Soweit könnte man das ja austesten. Ein anderes Verfahren sehe ich da nicht...
 
Das klingt ja nicht schlecht. Werde das mal so machen. Wenn's dem Prof nicht passt, soll er halt sagen, wie er's will!!

Besten Dank und gute Nacht!!!!:-(

Ollek81
 
In der Zeile mit der Verzweigung bemängelt GCC nämlich, dass ich einen Integer-Wert mit einem Pointer vergleichen will... Überseh ich da was?
Nein da übersiehtst du nix, denn der GCC ist gegenüber dem Visual C++ Compiler ein wenig penibler was solche Sachen angeht, ich will mal vorsichtig sagen, er ist etwas besser *g*.
Der Visual C++ Compiler verzeiht einem schon hier und da mal nen Fehler.

Gruss Homer, der das aus eigener Erfahrung kennt, wegen Windows/Unix Pralellentwicklung
 
^Negativ, Commander!^ ;)

Der VC++-Compiler kennt lediglich zwei Versionen von NULL und eine davon ist eben als #define NULL 0 definiert. Nix mit penibel oder so...GCC weiß einfach net so viel, wie der VC++-Compiler. :)

P.S.: Irgendwie glaube ich, ich hätte sowas schon mal geschrieben...
 
Nix mit penibel oder so...GCC weiß einfach net so viel, wie der VC++-Compiler.
Der GCC weiss immerhin, wie die offiziellen Standards für C und C++ aussehen - das wissen die Compiler von Microsoft und Borland nicht.
Oder willst Du mir erklären, dass ein Code wie
Code:
void main(void)
gängiges C ist? ;)

Der VC++-Compiler kennt lediglich zwei Versionen von NULL und eine davon ist eben als #define NULL 0 definiert.
Ich würde auch mal behaupten, dass das absoluter Schwachsinn ist. Wieso sollte die Konstante NULL bei VC++ doppelt definiert sein? Das kann doch über kurz oder lang nur zu Problemen führen...
Auch an dieser Stelle gibt GCC eine Warnung aus, wenn man mit NULL mit #define redefiniert.

Just my two cents...
 
Naja...ist letztlich alles Ansichtssache. Ich hab nichts dagegen, wenn ich mit ein paar weniger Sorgen coden kann, aber das ist ein freies Land und somit soll jeder seine Meinung haben.
 
Naja...ist letztlich alles Ansichtssache. Ich hab nichts dagegen, wenn ich mit ein paar weniger Sorgen coden kann, aber das ist ein freies Land und somit soll jeder seine Meinung haben.
Andererseits ist es doch gut, dass eine Programmiersprache so fest definierte Regeln hat. Diese paar Sorgen können u. U. nämlich ganz schnell ins Gegenteil umschlagen. Ausserdem ist C kein Visual Basic, wo man nichts kaputt machen kann. ;)

Im Augenblick gibt es mindestens drei verschiedene Versionen von C++:
  • Microsoft C++
  • Borland C++
  • ach, und richtiges C++ gibt es auch noch...
Richtig ist eine void-main-Methode bei VC++ auch nicht, aber der Compiler übernimmt das trotzdem ohne weiteres.
Wenn man sich an die offiziellen Standards für C und C++ hält, dann wird man weniger Sorgen mit dem Sourcecode haben, weil er (abgesehen von den Klassenbibliotheken) auf allen drei Umgebungen ohne Probleme compiliert werden kann.
 
^ Full ACK! ^

Aber ich hab trotzdem nix gegen ein paar "Schönheitsfehler" in den verschiedenen Auslegungen der Standards... ;)
 

Neue Beiträge

Zurück