Forum: Compiler & IDEs Compiler-Einstellung im Code erkennen?


von F. P. (pl504)


Lesenswert?

Ist es möglich, eine eingeschaltete Compiler-Optimierung oder 
Debug-Informationen im C-Präprozessor zu erkennen?

Die Idee ist, abhängig von der Compilereinstellung den C-Code zu 
modifizieren, um z.B. Verzögerungsschleifen zu korrigieren, die sich 
durch Optimierung oder Wegfall von Debug-Infos verändern.

von lalala (Gast)


Lesenswert?

F. P. schrieb:
> Die Idee ist, abhängig von der Compilereinstellung den C-Code zu
> modifizieren, um z.B. Verzögerungsschleifen zu korrigieren, die sich
> durch Optimierung oder Wegfall von Debug-Infos verändern.
Die Idee ist nicht gut.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

In deinem Ansatz ist der Wurm drin.

Zwar kannst du per #ifdef __OPTIMIZE__ oder #ifdef __OPTIMIZE_SIZE__ 
abtesten, ob Optimierung (auf Größe) aktiviert ist, aber wenn du das 
brauchst, hast du vermutlich einen Denkfehler im Programm.

Erzeugen / Nichterzeugen von Debug-Information wird niemals den von GCC 
erzeugten Code verändern, d.h. -g2, -gdwarf-3, -g0, -gstrict-dwarf etc. 
wirkt sich nicht auf den Code aus -- falls doch, ist es ein Bug im GCC.

von Eduard S. (schneehase)


Lesenswert?

Schau doch mal bei 
http://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html nach, ob 
da nicht was passendes für dich ist.

von F. P. (pl504)


Lesenswert?

Johann L. schrieb:
> #ifdef __OPTIMIZE__

Danke, danach habe ich gesucht!

von Harper B. (harper)


Lesenswert?

Ich empfehle, nicht abhängig von Compileroptionen am Code zu ändern, 
sondern durch #pragma die Compileroptionen zu unterdrücken bzw. so 
einzustellen, dass der Code korrekt läuft.

Beispiel:
1
#pragma GCC optimize ("string"...)

siehe auch:
http://gcc.gnu.org/onlinedocs/gcc/Function-Specific-Option-Pragmas.html

von Kaj (Gast)


Lesenswert?

F. P. schrieb:
> Die Idee ist, abhängig von der Compilereinstellung den C-Code zu
> modifizieren, um z.B. Verzögerungsschleifen zu korrigieren
Du willst also, das was die Compiler-Optimierung in deinem Code "kaputt" 
macht, wieder korrigieren...

Das Problem sitzt an einer ganz anderen Stelle, nämlich hier:
F. P. schrieb:
> Verzögerungsschleifen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.