006
19.07.2005, 12:59 Uhr
ao
(Operator)
|
Zitat von ~pinky: |
Danke (un)wissender, genau das was ich gesucht habe. Ich stelle mir aber noch die Frage, warum unckecked der default Wert ist? Wäre es andersherum nicht sinnvoller? Ich denke in es gibt deutlich mehr Fälle wo ein überlauf nicht gewollt ist und zu kritischen Situationen führen kann als umgekehrt.
|
Für sicherheitskritische Anwendungen gibt es Kodierungsrichtlinien, die über simples Overflow-Checking weit hinausgehen. Die haben in vielen Fällen dazu geführt, dass der Quellcode in diesen Bereichen gar nicht mehr von Menschen geschrieben wird, weil die viel zu viele Fehler machen.
Stattdessen sind zertifizierte Code-Generatoren im Einsatz, die mit Ablaufbeschreibungen in irgendeiner Form gefüttert werden und C++-, Java-, ADA- oder anderen Quelltext ausspucken, der dann von ebenfalls zertifizierten Compilern verwurstet wird. Und auch an die Tools, mit denen die Abläufe erstellt werden und der generierte Code analysiert wird, werden hohe Anforderungen gestellt.
Zurück zu C#: Es gibt die Compiler-Option /checked, die projektweit umgeschaltet werden kann. Wenn /checked eingeschaltet wird, dann werden alle Operationen, die nicht ausdrücklich im Code als unchecked gekennzeichnet sind, mit Überlaufprüfung übersetzt. Kannst ja mal ausprobieren, was das für ne Laufzeitbremse ist, wenn jede noch so popelige Berechnung erst mal auf Overflow abgeklopft wird, auch wenn da in der Realität nie was Schlimmeres drinsteht als 17 + 4.
ao |