我正在用C++ 11開發Raspbian上的用戶空間應用程序。 ReSharper的++建議我在下面的系統調用中使用nullptr
代替NULL
:我可以使用nullptr作爲Linux系統調用參數嗎?
auto ret = timerfd_settime(this->_timer_fd, 0, &timeout, NULL);
assert(0 == ret);
我認爲我應該留在NULL
,因爲這個庫是C.
專門用於系統編程什麼是最好的在這種情況下練習?
我正在用C++ 11開發Raspbian上的用戶空間應用程序。 ReSharper的++建議我在下面的系統調用中使用nullptr
代替NULL
:我可以使用nullptr作爲Linux系統調用參數嗎?
auto ret = timerfd_settime(this->_timer_fd, 0, &timeout, NULL);
assert(0 == ret);
我認爲我應該留在NULL
,因爲這個庫是C.
專門用於系統編程什麼是最好的在這種情況下練習?
我會留在nullptr因爲意圖更清楚。
有任何類型的nullptr隱式轉換爲指針,所以你絕對安全。
cppreference.com:
關鍵字nullptr表示指針字面。這是一個 類型std :: nullptr_t的值。存在從nullptr到 的任何指針類型和任何指向成員類型的空指針值的隱式轉換。
NULL
和nullptr
都可以正常工作。但是,由於這是C中的syspro,我會使用NULL
,因爲這是我在該領域更經常(如果不是總是)看到的東西。
如果你檢查你的系統調用的reference,你會看到,到處NULL
中提到,不nullptr
,一些東西,你應該期望(如果不是確保你會閱讀下面的答案)。
還請檢查NULL vs nullptr。
NULL和'nullptr'都是C++中有效的空指針常量;只是'nullptr'在某些情況下更安全。如果你有一個接受指針參數(可能爲null)的「extern C」C鏈接函數,那麼傳遞給它'nullptr'完全沒問題。 –
謝謝,這是我的問題的答案。 –