On Fri, Feb 24, 2012 at 04:08:28PM +0100, Martin Steigerwald wrote: > Am Freitag, 24. Februar 2012 schrieb Salvalaggio Marino: > > Hallo Freunde, > > > > nach dem Geblödel mal eine ernste Frage zu jenem dubiosen Code: > > > > Ich hatte dort unter anderem mal folgende Frage aufgeworfen: > > > > Was ich mich bei jenem Code vielmehr frage ist: Wird der > > vom C-Compiler wirklich ohne Fehlermeldung angenommen und als > > lauffähiges Programm ausgegeben? > > Cut&Paste => schmittchens-supertool.c > > gcc -o schmittchens-universalreparator schmittchens-universalreparator.c > > Hab überlegt, ob ich es mal ausprobiere. Aus purer Neugier. Hab ich aber > bislang nicht gemacht. Wer Zahlen mag, soll's tun. Wenn man den Code nimmt, sauber formattiert, Kommentare löscht, unnötige includes entfernt und die vielen printf()s löscht (das Programm soll ja angeblich was können außer den Bildschirm vollzuschreiben), dann bleibt: * Ein paar lokale Variablen * Eine Schleife von true bis 4194304 * darin Pointer mit Adressen füttern, die dann vergessen werden * Alle Variablen auf false setzen Da passiet mit anderen Worten nichts. Wenn man das mit Optimierung kompiliert (-O2), dann merkt das sogar der Compiler. Ohne die printf()s im Code bleibt präzise nichts. Wer's selber sehen will, nimmt sich den Code, löscht die printf()-Zeilen raus und vergleicht das Ergebnis mit dem eines leeren Programms. Mit dem Code in a/schmitt.c: mkdir b echo 'int main() { return 0; }' > b/schmitt.c gcc -O2 -S -o a/schmitt a/schmitt.c gcc -O2 -S -o b/schmitt b/schmitt.c diff {a,b}/schmitt :) Hauke -- .''`. Jan Hauke Rahm <jhr@debian.org> www.jhr-online.de : :' : Debian Developer www.debian.org `. `'` Member of the Linux Foundation www.linux.com `- Fellow of the Free Software Foundation Europe www.fsfe.org
Attachment:
signature.asc
Description: Digital signature