的
argc(自变量计数=数量的参数)和
argv(阵列,或参数值的列表中,根据语言) 是什么 *** 作系统给到程序作为参数。
在其他世界中:“它是如何被命名的”。
正如cptPH的答案明确指出的那样,这并非特定于
Qt或
Python。在这里看看:
https://zh.wikipedia.org/wiki/入口点
对于C和C ++:
https://zh.wikipedia.org/wiki/Entry_point#C_and_C.2B.2B
对于Python:
https://zh.wikipedia.org/wiki/Entry_point#Python
甚至shell脚本也有这些,称为“位置参数”:
http://www.tldp.org/LDP/abs/html/othertypesv.html
即使您的程序根本不使用命令行选项,无论是哪种语言或 *** 作系统(除非非常 非常 奇特的语言),您也将始终必须达到最低要求:
- a
argc
之1,因为 argv
数字0将是调用程序的名称(例如,如果您通过符号链接调用它,或者仅仅是因为您更改了构建过程的目标二进制文件,并且程序“ foo”现在是“ bar “-使用前:打印输出时不要使用硬编码的程序名称,而应使用argv
数字0)。
迟早,您将编写使用选项/参数的程序。因此,您将使用这些。示例:您可能想添加“ –verbose”或“ –debug”选项。或“ –input-
file”(如果涉及文件处理)。随你。您的程序将在启动时解析这些argv,并通过明智的编码来相应地更改其运行时行为。
示例:即使Python也可以使用很多可选选项,并使用
argc/处理它们
argv。从Python 3手册页:
python [ -B ] [ -b ] [ -d ] [ -E ] [ -h ] [ -i ] [ -I ] [ -m module-name ] [ -q ] [ -O ] [ -OO ] [ -s ] [ -S ] [ -u ] [ -v ] [ -V ] [ -W argument ] [ -x ] [ [ -X option ] -? ] [ -c command | script | - ] [ arguments ]
…这些
argv对于Python解释器都是可能的。
编辑:
Qt应用程序的实际示例:
我参加了开发的Qt网络应用程序。它可以在两种互斥模式下运行:
- “正常模式,
- 或“间谍模式”:这很特殊,因为某些低级 *** 作需要网络管理员特权。
因此,我向其中添加了CLI
-s/--spy-modeCLI选项。这些是可选的
argv。
在应用程序代码的开头,我检查了此
argv
-s/--spy-modeCLI选项
- 如果在不带此选项的“普通”模式下运行 ,则甚至不会向用户显示与“间谍”模式相关的GUI元素,也不会实例化其任何类。这很干净,因为否则它在许多对象实例化/方法中无论如何都会失败,并且到处都是错误,因为低级调用仍然会失败,然后我将返回一个非零的返回码。这是不好的。如果您可能失败,请尽快失败。
- 如果使用此
argv
选项以“间谍”模式启动,则我在代码中要做的第一件事是检查主叫用户确实具有这种“网络管理员”特权,然后1 /(如果没有)发出明确的错误消息/d出窗口,说明“您应该具有blablabla特权,blablabal尝试sudo blablabla”,然后使用非零返回码退出;或者如果用户确实具有所需的特权,则返回2 /,请提供特殊的“间谍模式” GUI元素并将它们投入使用,没问题(并且隐藏了大多数GUI“正常模式”元素,在这种 *** 作模式下毫无意义)。
这是
argc/argv有好处的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)