将 nullptr 传递给 C 函数是否安全?

Is it safe to pass nullptr to C function?

我有一些用纯 C 编写的库。现在我正在创建一些单元测试,但测试库是用 C++ 而不是 C 编写的。当我将 NULL 传递给 API 被测函数时,CLion 给了我传递 nullptr 而不是 NULL 的提示。在这种情况下将 nullptr 传递给纯 C 函数是否安全?

Is it safe to pass nullptr to pure C function in this case?

我认为是。来自 the C++11 standard (4.10 Pointer conversions):

A null pointer constant is an integral constant expression ([expr.const]) prvalue of integer type that evaluates to zero or a prvalue of type std::nullptr_t. A null pointer constant can be converted to a pointer type; the result is the null pointer value of that type and is distinguishable from every other value of object pointer or function pointer type.

A nullptr 和计算结果为 0 的整数常量表达式对于此类转换是等效的。