最近我遇到了一個函數的問題,它接受可變數量的參數,並期望最後一個參數爲空指針。 我無法訪問其實施。爲什麼要投射可變參數函數參數?
鑄造是最後一個參數一個void*
工作,但傳遞NULL
(nullptr
不適用)直接將不會:
foo(x,y,(void*)NULL); //okay
foo(x,y,NULL); //crash
IMO這不應該有所作爲,但話又說回來,我以前是錯的。你能想到演員會有所作爲的任何理由嗎?或者這只是一個意外事件(一些異步或錯誤的構建或沿着這些線路)
對不起,我不能提供更多的細節。
因爲'NULL'是一個整數,'(void *)NULL'是一個指針嗎?可變參數不會像普通函數那樣轉換任何東西。 – Pubby 2013-03-22 14:55:49
@Pubby我只是不明白這是如何重要的功能。你能提供一個例子嗎? – 2013-03-22 14:56:12
我認爲這是問題,請使用nullptr代替它,它應該工作 – Felics 2013-03-22 14:56:33