In GNUC C, è possibile utilizzare typeof(expression)
ed è legale utilizzare un'espressione con effetti secondari all'interno. Così, per esempio si può avere questo codice C:Effetti secondari all'interno di un'espressione typeof()
int x = 0;
typeof(x++) y;
In questo caso, l'effetto collaterale è ignorato e x è ancora a zero dopo (questo ha un senso come tipi sono un tempo di compilazione-unica cosa).
Tuttavia, il GCC documentation dice:
L'operando di typeof viene valutata per i suoi effetti collaterali se e solo se è un'espressione di tipo variabile modificata o il nome di un tale tipo.
Cosa significa questa frase? È davvero possibile scrivere typeof
con un effetto collaterale e avere l'effetto collaterale effettivamente eseguito in fase di runtime? Per me, questa frase sembra indicare questo.
http://stackoverflow.com/q/4436889/195488 –
@ 0A0D Questa domanda parla anche di 'typeof', ma non menziona gli effetti collaterali, ma solo le espressioni senza effetti collaterali. –
@PhilippWendler: Ottima domanda! – pje