2016-06-20 8 views
1

Ich habe mich gefragt, optimiert ist gcc diese (a als eine ganze Zahl betrachten, die Wert auf gcc unbekannt ist):Optimiert gcc aufeinanderfolgende Zusätze?

foo(a + 2 + 3); 

Um dies:

foo(a + 5); 

Oder macht es übersetzt sie in zwei Ergänzungen? Muss ich ein bestimmtes Optimierungslevel hinzufügen?

Danke!

+2

Verwenden Sie die Option '-S', um zu sehen, mit welcher Baugruppe GCC kompiliert wird. –

+0

Es heißt "konstante Faltung". –

Antwort

1

Ja. Dies geschieht auch ohne aktivierte Optimierung.

Es muss, weil zum Beispiel:

int x[2+2]; 

Recht C ist, auch wenn die Größe zum Zeitpunkt der Kompilierung bekannt sein muß.

+0

Sehr nette Antwort und Beispiel! –

Verwandte Themen