在GNUC C中,您可以使用typeof(expression)
,並且在內部使用帶有副作用的表達式是合法的。因此,例如,你可以有這樣的C代碼:typeof()表達式中的副作用
int x = 0;
typeof(x++) y;
在這種情況下,副作用被忽略,X仍然是零之後(這是有道理的類型是一個編譯時間嘛)。
然而,GCC documentation說:
typeof運算的操作數爲它的副作用 當且僅當它是可變類型 的表達或該類型的名稱進行了評價。
這句話是什麼意思?是否真的有可能編寫typeof
帶來副作用,並且實際上在運行時會執行副作用?對我而言,這句話似乎表明了這一點。
http://stackoverflow.com/q/4436889/195488 – 2012-07-16 12:52:44
@ 0A0D這個問題也談到'typeof',但沒有提到副作用,只有副作用的表達式。 – 2012-07-16 12:55:09
@PhilippWendler:好問題! – pje 2012-10-12 03:28:51