我想更好地了解启动 C 或 C++ 程序时命令行参数的幕后情况。我当然知道,argc
和 argv
在传递给 main()
时,分别表示参数计数和参数 vector 。
我想弄清楚的是编译器如何知道将 int argc
解释为从命令行传递的参数数量。如果我编写一个简单的函数来尝试模仿 main()
(例如 int testfunc(int argc, char* argv[])
),并传入一个字符串,编译器提示说,“预期为‘int’,但参数的类型为 char*”,正如我所料。当命令行参数传递给 main()
时,这有何不同解释?
最佳答案
在常见的 C 实现中,main
不是进程启动时调用的第一个例程。通常,它是一些特殊的入口点,如 _start
,当您链接它时,它由程序内置的 C 库提供。这个特殊入口点的代码检查传递给它的命令行信息(以某种方式在 C 之外,特定于操作系统)并为 main
构造一个参数列表。在那之后以及其他工作之后,它调用 main
。
关于c++ - 传递给 main() 的 argc 和 argv 值是如何设置的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47535171/