在编写C++代码时,以下两种方式有什么不同:
#include <cstdlib>
和
#include <stdlib.h>
除了前者大部分被包含在std::
命名空间中,还有其他的原因吗?
除了编程规范和风格之外,还有其他原因可以使用其中一个而不是另一个吗?
除了命名空间的情况之外,它们基本上是相同的。
stdlib.h
被废弃是不使用它的非常好的理由。它实际上在1998年出现的第一个标准中就已经被弃用了。当然,它仍然存在于C++14中,并且可能甚至包括或甚至可能在C++17中(我没有访问C++17标准),但由于它被弃用了,这是一个强烈的信号表明您不应该使用它。也许删除的风险并不是很高,但为什么要冒这个险呢?当编写新代码时,避免使用它非常容易。来自C++14标准:
这些都是弃用的功能,其中弃用是定义为:对于当前版的标准具有规范性,但已被确定为候选从未来修订中删除。
...
除此之外,您还需要注意到实践问题,即cstdlib
使用命名空间,在大多数情况下都更可取。
stddef.h
存在问题,而 stdlib.h
(所讨论的头文件)则没有! - Lightness Races in Orbit<cstdlib>
并使用using指令将名称从std::
带入全局范围。此外,应尽量将C和C++代码混合使用保持在最低限度,因为并非所有有效的C代码都是有效的C++代码,代码行为可能会有很大差异。 - Pharap