我可以将nullptr用作Linux系统调用参数吗?

时间:2015-09-05 20:21:03

标签: c++ c linux c++11 system-calls

我正在使用C ++ 11在Raspbian上开发用户空间应用程序。 ReSharper ++建议我在以下系统调用中使用nullptr而不是NULL

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

我认为我应该留在NULL,因为这个库专门用于C语言的系统编程。

在这种情况下,最佳做法是什么?

2 个答案:

答案 0 :(得分:2)

NULLnullptr都可以正常使用。但是,由于这是C语言中的syspro,我会使用NULL,因为它是我在该字段中经常(如果不是总是)看到的内容。

如果您查看系统调用的reference,则会看到提到NULL的地方,而不是nullptr,这是您应该期待的(如果不确定您&# 39;阅读以下答案)。

同时检查NULL vs nullptr

答案 1 :(得分:2)

我会留在nullptr因为意图更明确。

对于任何类型,都会将nullptr隐式转换为指针,因此您绝对可以安全。

cppreference.com:

  

关键字nullptr表示指针文字。这是一个prvalue   输入std :: nullptr_t。存在从nullptr到。的隐式转换   任何指针类型的空指针值和指向成员类型的任何指针。