argv [0]如何运作

yua*_*uan 1 c command-line-arguments

我知道这argv[0]代表了可执行文件名,但我不明白它是如何实现的 - 它如何在源代码级别获取文件名和选项.起初我以为它依赖于linux中的内置函数,但后来发现windows也支持它,让我相信它可能是由编译器完成的?

cey*_*yko 6

它实际上是C99标准的一部分,因此在编译器和操作系统中实现相同的实现.从5.1.2.2.1程序启动(第12页):

如果值argc大于零,则指向的字符串argv[0]表示程序名称 ; argv[0][0]如果程序名不能从主机环境获得,则应为空字符.如果值argc大于1,则argv[1]through 指向的字符串argv[argc-1]表示程序参数.

编辑:跟进Waleed Khan的评论,您可以通过以下方式检索这些值:

  • @ZhangYuan它没有在源代码级别实现.主机系统应该提供这个值. (3认同)