Optymalizacja sizeof()

KU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 166
0

Czy przy takim kodzie:

Kopiuj
char	dupa[] = {'d', 'u', 'p', 'a'};

//...
while ( something ) {
	//..
	foo(sizeof(dupa));
	//..
};

przy każdej iteracji będzie wywoływane sizeof(dupa), czy też optymalizator sobie to zamieni na 4 przy kompilacji?
Po co mi to? W kodzie mam wiele parametrów wyliczanych na podstawie rozmiaru struktur i przy modyfikacjach chcę wprowadzać zmiany w jednym miejscu (definicji), a nie w wielu. Mniej błędów :)

P.S. Nie znam assemblera, zatem odpowiedzi w stylu "sprawdź sobie" nie będą dla mnie pomocne.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

wartość sizeof jest ustalana tylko i wyłącznie podczas kompilacji! sizeof(cokolwiek) zawsze reprezentuje stałą!

KU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 166
0

Hmmm.... Jakby nie patrzeć, logiczne. Sorry, ja wciąż na etapie języków dynamicznie typowanych.
Dziękuję za odpowiedź.

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

jeszcze dla porządku, sizeof jest jednoargumentowym operatorem, nie funkcją. spokojnie można napisać

Kopiuj
foo(sizeof dupa);

i ma to taki sam efekt. dodanie nawiasu jest tylko dla bajeru.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.