• QtCreator调试传入运行参数


    QtCreator是非常不错的IDE,最近在做的Qt命令行应用,因为调试的环境不同等问题,需要在调试的时候为 main() 传入参数。度娘了半天,没找到方法,只能自力更生。后来在“项目-构建和运行-运行”下找到了。

    如果想在调试时为 main() 传入参数,只要将参数输入到上图红线中的“参数”栏即可。

    这里对 main() 函数及其参数简单介绍一下。

    C语言的 main() 可以有以下几种写法:

    1. int mian(void)

    2. int main(int argc) 

    3. int main(int argc, char *argv[]) 

    4. int main(int argc, char *argv[], char *env[]) 

    另外也有其他一些不太符合标准、不常见的写法。关于main() 的写法问题可以参见《你所未必了解的main()函数的事情》一文。

    上面 4 种写法中,1 和 3 较为常见,由于 argc 和 argv 通常搭配使用,所以方法 2 不常使用,方法 4 并不是所有编译器都支持,所以也很少使用。

    根据 C99 标准,main() 函数必须有 int 类型的返回值,不写返回值或者返回值为 void 类型都是不建议的,虽然有些编译器还支持这类写法。

    同样,一定要为 main() 指明参数类型 ,如果没有参数要在括号内填写 void ,不可留空。

    参数 argc 代表了输入参数个数,操作系统为 mian() 传入的 argc  至少为1,其值为该应用程序的名字;

    参数 argv 表示传入参数的字符串,是一个字符串数组;

    参数 env 内容是操作系统传入的环境变量字符串,同样是一个字符串数组。

    以下提供一样例程序EXAMPLE.EXE,  演示如何在main()函数中使用三个参数: 


         /*program name EXAMPLE.EXE*/ 
         #include <stdio.h> 
         #include <stdlib.h> 
         main(int argc, char *argv[], char *env[]) 
         { 
              int i; 
              printf("These are the %d  command- line  arguments passed  to 
                      main:/n/n", argc); 
              for(i=0; i<=argc; i++) 
                printf("argv[%d]:%s/n", i, argv); 
              printf("/nThe environment string(s)on this system are:/n/n"); 
              for(i=0; env!=NULL; i++) 
                   printf(" env[%d]:%s/n", i, env); 
         } 


        如果在DOS 提示符下, 按以下方式运行EXAMPLE.EXE: 


        C:/example first_argument "argument with blanks"  3  4  "last  but 
    one" stop! 
        注意: 可以用双引号括起内含空格的参数, 如本例中的:   "  argument 
    with blanks"和"Last but one")。 
        结果是这样的: 
         The value of argc is 7 
         These are the 7 command-linearguments passed to main: 
         argv[0]:C:/TURBO/EXAMPLE.EXE 
         argv[1]:first_argument 
         argv[2]:argument with blanks 
         argv[3]:3 
         argv[4]:4 
         argv[5]:last but one 
         argv[6]:stop! 
         argv[7]:(NULL) 
         The environment string(s) on this system are: 
         env[0]: COMSPEC=C:/COMMAND.COM 
         env[1]: PROMPT=$P$G            /*视具体设置而定*/ 
         env[2]: PATH=C:/DOS;C:/TC      /*视具体设置而定*/

    本文示例来自于:http://www.programfan.com/blog/article.asp?id=39240

    http://blog.csdn.net/desert187/article/details/40781225

  • 相关阅读:
    nginx -s reload 时报错 [error] open() "/run/nginx.pid" failed (2: No such file or directory)
    系统调用(四):SSDT
    系统调用(三): 分析KiFastCallEntry(二)
    系统调用(二): 分析KiFastCallEntry(一)
    系统调用(一): 重写WriteProcessMemory
    CVE-2009-0927分析
    CVE-2008-0015分析
    CVE-2006-4868分析
    在linux上使用impdp命令时提示ORA-12154: TNS:could not resolve the connect identifier specified的问题
    破解myeclipse10失败的一个奇葩原因
  • 原文地址:https://www.cnblogs.com/findumars/p/4941350.html
Copyright © 2020-2023  润新知