Optymalizacja sizeof()

0

Czy przy takim kodzie:

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.

0

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

0

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

0

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

foo(sizeof dupa);

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1