我有几个关于在C++中调用C标准库函数的问题:
- 如果我想调用在
<stdio.h>
中声明的getline()
函数,只包含<cstdio>
头文件是否就足够了?这在我使用的编译器上可以工作,并且我看到它在<cstdio>
中包含了<stdio.h>
,但我想知道标准是否保证这一点。 - 所有C标准库函数都保证在C++中可用吗?以上面的
getline()
为例,我注意到在cppreference中的<cstdio>
下并没有列出getline()
。 - 对于在
std::
命名空间中提供的C标准库函数和类型,例如FILE
或malloc()
,是否通过全局命名空间访问它们存在任何问题,还是更符合习惯地将它们访问为std::FILE
或std::malloc()
?
getline
不是C标准库函数,而是POSIX函数。如果它在您的编译器的C库中可用,则在C++中也可用。 - molbdnilogetline
函数,并不保证<cstdio>
会声明它。尽管可能会声明,但不能保证,因为它既不是标准C++的一部分,也不是标准C的一部分。 - Some programmer dude