2015-09-05 165 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

相关问题