system() 函数属于 C 还是 C++?

3
#include <stdio.h>
#include <stdlib.h>
void main ()
{
   system("dir");
}

我在很多C++书籍中看到system()用于执行命令行程序。但是当我在C语言中尝试相同的命令时,它却完美地工作了。因此,我的问题是它是否是标准的C或C++函数?请您宽容一些,因为我是C编程的新手。


7
是两种情况都存在。但是void main 在任何一种情况下都是不合法的。 - James Kanze
@JamesKanze 实际上,许多嵌入式系统的编译器(当然,实现非标准扩展)确实期望 void main() - Filippo Lauria
3
@FilippoLauria 或许是这样,但如果问题没有特别说明,应该假设它是一个关于标准C++的普通问题。 - Neil Kirk
1
@FilippoLauria 但是它们是否也支持 system 呢?非托管环境有很多自由度;它的启动方式是实现定义的,并且大多数标准库(包括 system)都是可选的。在大多数情况下,我不会期望非托管环境支持 system(当然也不支持 system("dir"))。 - James Kanze
5个回答

5

由于system函数声明在stdlib.h头文件中,因此它可以被视为C函数。但在C++中,stdlib.h已经合并到std命名空间中,并以这种形式位于cstdlib包含文件中。因此正确答案是"both"。



4

两种语言都使用标准C库,而标准的C++库包含了C库。

在C++中,您应该包含C++样式头文件<cstdlib>,并将其称为std::system。直接包含C头文件已经被弃用。


3

这既是对的,也是不对的。C定义了许多函数。C++定义了许多与C完全相同的函数,一些略微不同于C中的函数,以及许多在C中不存在的函数和类。知道一个函数是标准C++的一部分并不能说明它是否是标准C的一部分,而知道一个函数是标准C的一部分也不能说明它是否是标准C++的一部分。


0

由于它们都支持stdlib.h,其中包含system()函数的原型,因此c和cpp都支持函数system。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接