是否为_argc和_argv包含dos.h?

是否为_argc和_argv包含dos.h?,c,C,在使用_argc和_argv全局变量时,是否需要在c程序中包含dos.h头文件 如以下示例所示:- /* sample.c */ #include<stdio.h> #include<dos.h> int main() { int i; for(i=1; i<_argc; i++) printf("%s ", _argv[i]); return 0; } /*sample.c*

在使用_argc和_argv全局变量时,是否需要在c程序中包含dos.h头文件

如以下示例所示:-

/* sample.c */
#include<stdio.h>
#include<dos.h>
int main()
    {
        int i;
        for(i=1; i<_argc; i++)
            printf("%s ", _argv[i]);
        return 0;
    }
/*sample.c*/
#包括
#包括
int main()
{
int i;

对于(i=1;i如果要使用程序参数,标准方式如下所示:

int main(int argc, **argv)
{
/* use argc and argv here */
}
这些不是全局变量,但您可以将它们复制到全局变量。
如果这些_argc和_argv表示其他意思,那么dos是非常混乱的。

Turbo C有这些变量,您可以在以下位置阅读更多内容:

http://www.indiabix.com/c-programming/command-line-arguments/discussion-477


是的,如果你需要使用那些变量,包括
dos.h
…否则只需使用标准的main,就像在其他答案中一样。

你的问题的直接答案是,必须在某个地方声明变量,编译器才能找到它们。在
dos.h
dos.h
中包含的某个文件中,有一个定义用于
\u argc
\u argv
的选项

如果您没有包括
dos.h
,您仍然需要在某个地方声明
extern int\u argc;
extern char*\u argv[];
才能使用它们。否则,您将得到一个编译器错误,因为编译器不知道这些变量是什么

这些变量可能是由您的C运行时提供的。当您构建一个程序时,编译器和链接器会放入与启动应用程序有关的各种支持样板代码。如果您想知道这些变量实际存在于何处,请参阅此样板启动代码

(此启动代码是程序启动时运行的代码。然后,启动代码通过调用
main()
函数将控制权交给程序。)

但是,对于这种特殊情况,您确实希望使用C标准定义的
argc
argv
提供给
main()
。这将使您的程序可移植到所有C编译器,而不限于特定(可能是古老的)编译器。引用该标准

程序启动时调用的函数名为main 实现没有声明此函数的原型。它可以是 定义时没有参数:

     int main(void) { /*...*/ }
或者使用两个参数(此处称为argc和argv,尽管有 可以使用名称,因为它们是其所在函数的本地名称 声明):


当然,如果你使用这些
argc
argv
,你当然不需要
dos.h

你知道头文件是什么吗?为什么不直接使用普通的
argc
argv
参数来
main
?启发我?——————@TimCastelijns@Ignorant,dos是古老的,这不是标准代码所以,如果你不知道头文件是什么,也许你需要一本关于C的书,然后开始阅读?这段代码是不合适的,因为它依赖于特定于平台的代码,当一个可移植的解决方案存在的时候。一般来说,如果可以避免的话,不要让你的代码依赖于一个单一的系统。此外,dos.h根本不需要。也许对于_argc,或者_argv,无论在dos下是什么,但不适用于argc和argv。您可以在dos下尝试这些,看看t是否在那里工作。当您引用标准时,请注意:请记住说出您引用的标准的哪个版本以及哪个部分中的哪个段落,以便其他人可以轻松地导航到它。我发现它很有用。谢谢
     int main(void) { /*...*/ }
     int main(int argc, char *argv[]) { /*...*/ }