2015-09-05 102 views
2

我正在用C++ 11開發Raspbian上的用戶空間應用程序。 ReSharper的++建議我在下面的系統調用中使用nullptr代替NULL我可以使用nullptr作爲Linux系統調用參數嗎?

auto ret = timerfd_settime(this->_timer_fd, 0, &timeout, NULL); 
assert(0 == ret); 

我認爲我應該留在NULL,因爲這個庫是C.

專門用於系統編程什麼是最好的在這種情況下練習?

+3

NULL和'nullptr'都是C++中有效的空指針常量;只是'nullptr'在某些情況下更安全。如果你有一個接受指針參數(可能爲null)的「extern C」C鏈接函數,那麼傳遞給它'nullptr'完全沒問題。 –

+0

謝謝,這是我的問題的答案。 –

回答

2

我會留在nullptr因爲意圖更清楚。

有任何類型的nullptr隱式轉換爲指針,所以你絕對安全。

cppreference.com:

關鍵字nullptr表示指針字面。這是一個 類型std :: nullptr_t的值。存在從nullptr到 的任何指針類型和任何指向成員類型的空指針值的隱式轉換。

2

NULLnullptr都可以正常工作。但是,由於這是C中的syspro,我會使用NULL,因爲這是我在該領域更經常(如果不是總是)看到的東西。

如果你檢查你的系統調用的reference,你會看到,到處NULL中提到,不nullptr,一些東西,你應該期望(如果不是確保你會閱讀下面的答案)。

還請檢查NULL vs nullptr

相關問題