Hallo Helfer,
also es geht um folgendes: Also bevor man ein Programm Kompiliert und Verlinkt entfernt der Compiler "unerreichbaren Code" - das ist eine Tatsache die in einer Fachzeitschrift stand, also werde ich das mal glauben.
Vielmehr kann ich mir jetzt nicht vorstellen was das sein soll, und warum man sowas macht.. ist doch nur zusätzliche Arbeit.
Handelt es sich hier um Kommentare? Oder um Code der für eine andere "Prozessorstrucktur" vorgesehen ist? Oder um was anderes?
Mfg
Chris
Eine allgemeine Frage - für zwischendurch.
-
- Posts: 104
- Joined: 12. Feb 2004 12:53
- Location: Jülich
Das was da weg-optimiert werden kann, sind sicherlich Kommentare aber es kann auch nicht erreichbarer Quellcode sein. Schleifenkonstrukte sind sicher auch ein Ziel der Optimierungs-Engine des Compilers...
Ansonsten verweise ich mal auf Wikipedia: http://de.wikipedia.org/wiki/Compiler#P ... imierung_2
Ansonsten verweise ich mal auf Wikipedia: http://de.wikipedia.org/wiki/Compiler#P ... imierung_2
It just works.
Das ist Code der einfach nicht gebraucht wird. Ensteht durch Programmierfehler. Uninitialisierte Variablen sind so ein Fall. Copyaufrufe auf uninitialisierte Variablen und alles was auf diese zugreift. Wenn man ein Programm schreibt in denen Konstrukte vorkommen die niemals gebraucht werden ist das 'dead code' (Toter Code).
Warum soll der Compiler die umsetzen? Das der Compiler das merkt und damit mehr Arbeit hat ist klar. Doch wenn der Programmierer richtig programmiert und sowas erst nicht macht dann bräuchte der Compiler sich nicht darum zu kümmern.
Achte mal darauf wenn du ein Programm kompilierst wie oft es da passiert das so etwas in der Art drin steht.
Macht keinen Sinn diesen Code in Binär umzuwandeln weil der steht nutzlos im Programm herum und langweilt sich. Frisst auch noch Brot obwohl er nix macht.
Kommentare sind es nicht, weil das ist kein Code sondern reine Textanweisungen die den Compiler nicht interessieren.
Warum soll der Compiler die umsetzen? Das der Compiler das merkt und damit mehr Arbeit hat ist klar. Doch wenn der Programmierer richtig programmiert und sowas erst nicht macht dann bräuchte der Compiler sich nicht darum zu kümmern.
Achte mal darauf wenn du ein Programm kompilierst wie oft es da passiert das so etwas in der Art drin steht.
Code: Select all
Uninitialized Variable in .........
Kommentare sind es nicht, weil das ist kein Code sondern reine Textanweisungen die den Compiler nicht interessieren.
MMN versteht man unter "unerreichbaren Code" Codestücke die nie durchlaufen werden. Z.B.:
oder
Auf keinen Fall werden vom Compiler uninitialisierte Variablen entfernt! Gemeint sind hier wohl Variablen die definiert, aber nicht benutzt werden.
In obigem Beispiel könnte j vom Compiler entfernt werden, da j nicht verwendet wird.
Gruß
Udo
Code: Select all
if ( true ) {
a = x+1;
} else {
// unreachable code
for ( int i=0; i<100; i++ ) {
....
}
}
Code: Select all
void test()
{
return;
// unreachable code
for ( int i=0; i<100; i++ ) {
....
}
}
Code: Select all
void test()
{
int i; // nichtinitialisierte Variable
int j=0;
if ( i==0 ) { // Gibt Ärger, Wert von i ist zufällig
}
}
Gruß
Udo