我正在用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'完全没问题。 –
谢谢,这是我的问题的答案。 –