我正在汇编中开发我自己的 getopt() 版本,并试图让我的头脑围绕这个片段,特别是第 476 行
if (argc < 1)
return -1;
Run Code Online (Sandbox Code Playgroud)
因为正常的调用约定是这样的;
int c = getopt( argc, argv, "vm:drx:");
Run Code Online (Sandbox Code Playgroud)
假设程序员事先没有对 argc 进行任何操作,我认为可能存在的唯一原因是某些 Linux 风格(可能不符合 POSIX)不会传递 argv[0] 应用程序路径和名称。因此,argc 可能为零。这个猜想有可信度吗?
此变量在此过程中使用了 12 次,在此之前的两级过程中,它仅被断言或复制,从未被修改,也根本没有被引用。