【发布时间】:2018-05-12 02:56:20
【问题描述】:
这是一个相当简单的问题,但我不能放过它。我最近再次开始使用 C (一开始对它的经验并不丰富),所以我可以更好地理解引擎盖下发生了什么。我当然知道 argc 和 argv 在传递给 main() 时分别代表参数计数和参数向量。我想弄清楚的是编译器如何知道将 int argc 解释为从命令行传递的参数的数量。如果我编写一个尝试模仿 main 的简单函数(即 int testfunc(int argc, char* argv[])),并传入一个字符串,编译器会抱怨,“预期为 'int',但参数是 char* 类型”正如我所料。将命令行参数传递给 main() 时如何解释?
【问题讨论】:
-
命令行不是作为字符串传入的,幕后有很多神奇的事情发生
-
C 运行时启动代码获取参数字符串(来自操作系统,以操作系统特定的方式),将其拆分为多个片段,并调用
main传递这些片段。或者在某些情况下(Unix-y 系统)操作系统(更准确地说是 shell)解析字符串并将其分段传递给 C 运行时。