Hallo,
Ein Programm empfinde ich (unter Window jedenfalls) stabil, wenn es sich, falls es einmal nicht mehr reagiert, sofort und ohne Murren über den Taskmanager beenden lässt. Etliche Programme lassen sich einfach nicht schließen, da nützt der beste Taskmanager nichts mehr, nur noch ein reboot.
Du hast ein seltsames Verständnis von "stabil". Ein Programm, das das von dir beschriebene Verhalten zeigt (nämlich dass es nicht mehr reagiert), würde ich per se schon nicht mehr als stabil bezeichnen. Ein stabiles, zuverlässiges Programm macht sowas nicht.
Ähm, das versteh ich jetzt nicht, hast du da ein Beispiel zu? Ein Compiler führt eine lexikalische, syntaktische und semantische Analyse durch. Alle drei Eigenschaften sind im Sprachstandard festgelegt und lassen dem Compiler meinen Verständnis nach keinen Spielraum. Wie kann da ein Compiler Fehler verzeihen ein, anderer nicht?
Speziell bei den C-Compilern gibt es typischerweise zwei Stufen von Fehlern, nämlich Errors und Warnings.
Bei den Errors handelt es sich in der Regel um klare Verletzungen der Sprachspezifikation, und daran gibt es üblicherweise nicht viel zu deuten.
Aber ob ein Compiler bei bestimmten Anweisungen Warnungen ausgibt oder nicht, ist implementierungsabhängig, lässt sich teilweise sogar individuell an- und abschalten. Kandidaten für Warnings sind Anweisungen, die zwar syntaktisch richtig sind, aber im Kontext nicht eindeutig, fragwürdig oder ungewöhnlich.
Zum Beispiel:
if (k<0) // Warning: Condition is always false
[wenn k als unsigned deklariert ist]
while (c=check(input)) // Warning: Possibly incorrect assignment
[vielleicht war hier ein Vergleich gemeint und keine Zuweisung]
... and many more ...
Hier liegt es tatsächlich im Ermessen des Compilerherstellers, solche Anweisungen mit einer Warnung zu kommentieren oder es bleiben zu lassen.
So long,
Martin