草庐IT

register_argc_argv

全部标签

x86-64 : when are structs/classes passed and returned in registers? 上的 C++

假设Linux上的x86-64ABI,在C++中的什么条件下,结构传递给函数是在寄存器中还是在堆栈中?在什么情况下它们会返回到寄存器中?类(class)的答案会改变吗?如果它有助于简化答案,您可以假设一个参数/返回值并且没有浮点值。 最佳答案 ABI规范定义here.有更新版本可用here.我假设读者已经习惯了文档的术语,并且他们可以对基本类型进行分类。如果对象大小大于两个八字节,则在内存中传递:structfoo{unsignedlonglonga;unsignedlonglongb;unsignedlonglongc;//Com

c++ - 当你不遵循 argv 和 argc 的做法时会发生什么

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:main(intargc,char*argv[])Main'sSignatureinC++如果我写:intmain(intargc,char**argv)我得到正确的命令行输入。如果我写说会发生什么,intmain(intfoo,doublefooDouble,fooTypeFooVar)这是取决于操作系统还是取决于编译器?

c++ - 在 C++ 中将字符串转换为 argv

我有一个std::string包含一个要用execv执行的命令,将它转换为execv()的第二个参数所需的“char*argv[]”的最佳“C++”方法是什么?澄清一下:std::stringcmd="mycommandarg1arg2";char*cmd_argv[];StrToArgv(cmd,cmd_argv);//howdoIwritethisfunction?execv(cmd_argv[0],cmd_argv); 最佳答案 这里的答案非常不统一。有什么问题:std::stringcmd="echohelloworld";

c++ - 如何从库函数访问 C++ 中的 argc 和 argv

我正在编写一个库,该库将在C++中动态加载。我想从我的代码中读取argc和argv(出于调试原因),但是我无权访问main函数。有什么方法可以检索命令行(Windows和Linux解决方案都很好)。谢谢,丹 最佳答案 在Linux上,伪文件/proc/self/cmdline包含进程的命令行。每个参数都以0字节结尾,最后一个参数后跟一个额外的0字节。 关于c++-如何从库函数访问C++中的argc和argv,我们在StackOverflow上找到一个类似的问题:

c++ - 在 Google 测试框架的测试用例中访问 argc 和 argv 的方法是什么?

我正在使用GoogleTest测试我的C++项目。但是,有些情况需要访问argc和argv才能加载所需数据。在main()方法中,初始化时,argc和argv被传递给测试的构造函数。testing::InitGoogleTest(&argc,argv);我如何在稍后的测试中访问它们?TEST(SomeClass,myTest){//HereIwouldneedtohaveaccesstoargcandargv} 最佳答案 我不知道谷歌的测试框架,所以可能有更好的方法来做到这一点,但应该这样做://------------------

c++ - 将命令参数与 argv[] 进行比较不起作用

我正在尝试将command的参数与argv[]进行比较,但它不起作用。这是我的代码。./a.out-d1在主函数中intmain(intargc,char*constargv[]){if(argv[1]=="-d")//callsomefunctionhere}但这不起作用...我不知道为什么这种比较不起作用。 最佳答案 您不能使用==比较字符串。相反,请使用strcmp。#includeintmain(intargc,char*constargv[]){if(strcmp(argv[1],"-d")==0)//callsomefu

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()相比如何?谢谢。

windows - perl 优先于 glob @argv

因为在Windows上*.csv不会从命令行扩展到@ARGV我通常最终会做类似的事情map{glob}@ARGV获取文件名。然而,我遇到了一个异常,只是想了解到底发生了什么。我刚刚读完《异地奇缘》,所以我可以说我没有完全理解!useModern::Perl;#getsthefilelistbutthenwarnssay"Test1",'-'x20;do{func($_)formap{glob}@ARGV}orwarn"atleastoneargexpected\n";say'-'x27,"\n";#worksoksay"Test2",'-'x20;my@x=map{glob}@ARGV

c - *.* 在 C 中的 argv[1] 中

背景:某些Windows命令行程序允许在第一个参数中使用*.*:myprogram*.*并且会自动循环遍历目录下的所有文件。其他一些则不需要,因此需要一个批处理循环:for%%cin("*.*")domyprogram"%%c"问题:是否有一种标准的方式(用C语言定义或操作系统提供?)允许*.*或*.txt在参数,以便它会自动对相关文件进行处理?intmain(intargc,char*argv[]){FILE*kf;"forfnameinargv[1]"//pseudocodeheremeaning://let'slooponallfilesdescribedbythefirstar