【发布时间】:2019-01-16 08:37:12
【问题描述】:
我有几个关于在 C++ 中调用 C 标准库函数的问题:
- 如果我想调用在
<stdio.h>中声明的getline(),是否只包含<cstdio>就足够了?这适用于我正在使用的编译器,我看到它在<cstdio>中包含<stdio.h>,但我想知道标准是否保证这一点。 - 是否所有 C 标准库函数都保证在 C++ 中可用?在上面的
getline()示例中,我注意到在cppreference 上<cstdio>下它没有列出getline()。 - 对于在
std::命名空间中可用的 C 标准库函数和类型,如FILE或malloc(),它们在通过全局命名空间访问它们时是否有任何问题,或者将它们作为 @ 访问它们是否更习惯987654334@或std::malloc()?
【问题讨论】:
-
getline不是 C 标准库函数,它是 POSIX。如果它在您的编译器的 C 库中可用,则它在 C++ 中可用。 -
假设它是您正在考虑的POSIX
getlinefunction,不能保证<cstdio>会声明它。它可能会,但不能保证,因为它不是标准 C++ 或标准 C 的一部分。 -
你们是对的,我错过了它是一个 POSIX 函数,它回答了我上面的第 2 个问题。
标签: c++ c++11 c++-standard-library