草庐IT

c++ - 处理 argc 等于 0

我最近看到了一些奇怪的东西。在HHVM源代码中,main()函数的前3行如下所示:if(!argc){return0;}这有点傻,但是,我还是忍不住想知道...为什么要返回0!?并不是我认为有一些正确的方法来处理这个问题,而是返回0,通常与成功联系在一起,似乎特别不合适。除了不崩溃之外,曾经是否存在对argc为0的适当响应的情况?(甚至小于0?)这重要吗?我知道在argc为0的情况下结束的唯一方法是使用exec()和friend。如果由于某种原因确实发生了这种情况,那几乎可以肯定是调用者中的错误,而被调用者对此无能为力。(标记为C和C++,因为我希望这两种语言的答案相同)编辑:为了尽量

c++ - int main(int argc, char** argv)

这个问题在这里已经有了答案:关闭11年前。Duplicate:Whatistheproperdeclarationofmain?main函数中的参数是什么意思?他们想告诉我们什么?intmain(intargc,char**argv)更新:而且,前面的代码行是否类似于此intmain(intargc,char*argv[])?如果是这样,我们怎么能说char**argv与char*argv[]相似,因为它们在数组中看起来并不相似观点?它与没有任何参数的intmain()相比如何?谢谢。

swift - 如何快速访问 argv 和 argc?

这个问题在这里已经有了答案:HowdoIaccessprogramargumentsinSwift?(6个答案)关闭8年前。我正在使用Swift编写一个命令行应用程序,但我不确定如何访问传入的参数。在C/Obj-c中,它似乎相对轻松,但如果我尝试:argv[0]我收到一个错误:使用未解析的标识符“argv”

php - undefined variable argc PHP

我正在尝试执行这段代码:functionmain(){if($argc但我收到以下错误:PHPNotice:Undefinedvariable:argcin/home/me/test.phponline15我以为$argv和$argc是全局变量。我怎样才能摆脱这个错误?我正在从命令行运行它。 最佳答案 添加一个global$argc,$argv;之后functionmain(){这些变量在全局范围内,但不在您的函数范围内。global关键字导入它们。 关于php-undefinedvar

c - initialize_main (&argc, &argv) 是做什么的?

我正在阅读coreutils源代码以学习linux下的编程。我发现在大多数程序中,如ls.c、cat.c,它们会在前几行调用宏函数initialize_main()。所以我查看了system.h以找到实现:/*Redirectionandwildcardingwhendonebytheutilityitself.Generallyanoop,butusedinparticularfornativeVMS.*/#ifndefinitialize_main#defineinitialize_main(ac,av)#endif不明白为什么要定义这样一个宏,也看不懂评论。

c++ - argc 和 argv 的 void cast

我在看一段C++代码,main函数的第一行引起了我的注意:intmain(intargc,constchar*argv[]){(void)argc;(void)argv;...}除此行之外,根本不使用argc和argv。为什么作者要进行空投?是否可以阻止编译器提示未使用的变量? 最佳答案 “是否可以阻止编译器提示未使用的变量?”是的 关于c++-argc和argv的voidcast,我们在StackOverflow上找到一个类似的问题: https://sta

c++ - 获取进程的 argc 和 argv 的替代方法

我正在寻找替代方法来获取提供给进程的命令行参数argc和argv,而无需直接访问传递给main的变量().我想创建一个独立于main()的类,这样argc和argv就不必显式传递到使用它们的代码。编辑:一些澄清似乎是有序的。我有这门课。classApplication{intconstargc_;charconst**constargv_;public:explicitApplication(int,charconst*[]);};Application::Application(intconstargc,charconst*argv[]):argc_(argc),argv_(argv

c++ - 为什么 argc 是 'int' (而不是 'unsigned int' )?

为什么命令行参数计数变量(传统上是argc)是int而不是unsignedint?这有技术原因吗?在尝试摆脱所有已签名的未签名比较警告时,我总是忽略它,但从不明白为什么会这样。 最佳答案 原来的C语言在默认情况下任何变量或参数都被定义为int类型,这可能是另一个因素。换句话说,您可以:main(argc,char*argv[]);/*seeremarkbelow...*/而不是intmain(intargc,char*argv[]);编辑:实际上,正如Aaron提醒我们的那样,最原始的语法应该类似于main(argc,argv)ch

c++ - 在主函数中重命名 argc 和 argv 是否安全?

许多程序对一些参数和字符串数组使用标准名称。main函数原型(prototype)如下:intmain(intargc,char*argv[]);。但是,如果我为这些变量选择自定义名称,我会破坏一些东西吗?例如intmain(intn_of_args,char*args[]);在编译器的上下文中,一切都很好。这些变量对于main函数是局部的,因此它们可以有任何名称。简单的代码可以完美地构建和运行。但是这些名称可能会被预处理器使用。那么重命名这些参数是否安全?PS就我个人而言,我觉得这些名字很糟糕,因为它们看起来非常相似,而且只有一个字母不同。但是每个人都出于某种原因使用它们。

c++ - 为什么 argc 不是常数?

intmain(constintargc,constchar[]constargv)作为EffectiveC++Item#3声明“尽可能使用const”,我开始思考“为什么不将这些‘常量’参数设为const”?。有没有在程序中修改argc的值的场景? 最佳答案 在这种情况下,历史是一个因素。C将这些输入定义为“非常量”,并且与(大部分)现有C代码的兼容性是C++的早期目标。某些UNIXAPI,例如getopt,实际上确实操作argv[],因此不能将其设为const还。(旁白:有趣的是,虽然getopt的原型(prototype)表明