W GNUC C można użyć typeof(expression)
i używanie wyrażenia zawierającego efekty uboczne jest legalne. Tak na przykład można mieć ten kod C:Efekty uboczne w wyrażeniu typeof()
int x = 0;
typeof(x++) y;
W tym przypadku, efektem ubocznym jest ignorowany, a x jest nadal zera potem (to sens jako typy są kompilacji tylko rzecz).
Jednak GCC documentation mówi:
Argument z typeof jest oceniany pod kątem jego skutków ubocznych wtedy i tylko wtedy, gdy jest wyrazem zmiennie zmodyfikowanego typu lub nazwa takiego typu.
Co oznacza to zdanie? Czy naprawdę można napisać typeof
z efektem ubocznym i czy efekt uboczny faktycznie zostanie wykonany w czasie wykonywania? Dla mnie to zdanie wydaje się wskazywać na to.
http://stackoverflow.com/q/4436889/195488 –
@ 0A0D To pytanie również mówi o 'typeof', ale nie wspomina o efektach ubocznych, tylko wyrażeń wolnych od efektów ubocznych. –
@PhilippWendler: Świetne pytanie! – pje