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

QtCreator调试传入运行参数的更多相关文章

  1. IntelliJ IDEA设置JVM运行参数

    2015十一月 28 原 IntelliJ IDEA设置JVM运行参数 分类:JavaSE (11566) (1) 打开 IDEA 安装目录,看到有一个 bin 目录,其中有两个 vmoptions ...

  2. 怎么样调试正在运行的exe?

    最近在调虚幻的编辑器的时候遇到了一个问题. 调试模式运行UE4Editor.exe 实际上只是一个带参的命令行. 打开后,它又通过这个参数生成了一份详细配置,重新调用了自己.如图 这就悲剧了,断点都没 ...

  3. 调试和运行matlab代码(源程序)的技巧和教程

    转载请标明出处:专注matlab代码下载的网站http://www.downma.com/ 本文主要给大家分享使用matlab编写代码,完成课程设计.毕业设计或者研究项目时,matlab调试程序的技巧 ...

  4. QTCreator 调试:unknown debugger type "No engine"

    [1]QTCreator调试,应用程序输出:unknown debugger type "No engine" 如图:下断点->调试程序->应用程序输出 说明:调试器无 ...

  5. Linux vm运行参数 - OOM相关的参数

    一.前言 本文是描述Linux virtual memory运行参数的第二篇,主要是讲OOM相关的参数的.为了理解OOM参数,第二章简单的描述什么是OOM.如果这个名词对你毫无压力,你可以直接进入第三 ...

  6. “-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数

    [JAVA学习]“-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数 转载 2016年06月13日 19:33:38 2792 年轻代 年老代概念 htt ...

  7. jvm的运行参数

    1.我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负 ...

  8. Java 设置系统参数和运行参数

    系统参数 系统级全局变量,该参数在程序中任何位置都可以访问到.优先级最高,覆盖程序中同名配置. 系统参数的标准格式为:-Dargname=argvalue,多个参数之间用空格隔开,如果参数值中间有空格 ...

  9. paip.提升效率--调试--日志系统日志参数含义---python

    paip.提升效率--调试--日志系统日志参数含义---python #同时向控制台和文件输出日志 #日志参数含义 import logging log_format = '%(filename)s ...

随机推荐

  1. MySQL数学函数

    官方文档:Numeric Functions and Operators Name Description ABS() Return the absolute value ACOS() Return ...

  2. (转) Linux的capability深入分析(2)

    一)capability的工具介绍   在我们的试验环境是RHEL6,libcap-2.16软件包中包含了相关的capability设置及查看工作,如下:   rpm -ql libcap-2.16- ...

  3. apache 启动不了

    netstat -ano|findstr "443" 发现443端口被占 记录下443端口对应的PID 进入任务管理器,查看进程,发现为一个叫做vmware-hostd.exe的进 ...

  4. BZOJ2292: 【POJ Challenge 】永远挑战

    2292: [POJ Challenge ]永远挑战 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 513  Solved: 201[Submit][ ...

  5. 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

    原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...

  6. .net中除去IList中的多余项

    IList<ActionInfo> tempList = new List<ActionInfo>(); IList<ActionInfo> tempActionL ...

  7. IDF实验室解题学习笔记1

    1.图片里的英文 图片可以有很多种打开方式,破解该题,需将图片下载下来. 对于图片,我们可以使用图片编辑软件,进行各种调明暗,变色调等操作. 我们还可以使用2进制或者16进制的文件打开方式打开.该图使 ...

  8. lucene3.6.0 经典案例 入门教程

    第一步:下载并导入lucene的核心包(注意版本问题):  例如Lucene3.6版本:将lucene-core-3.6.0.jar拷贝到项目的libs 文件夹里.  例如Lucene4.6版本:将l ...

  9. myeclipse实现Servlet实例(2) 继承GenericServet类实现,需要重写service方法

    1.在myeclipse新建web project,配置Tomcat(在myeclipse的Window--preferences) 2.然后在src新建servlet文件( 此处放在com.tsin ...

  10. Spring整合Shiro做权限控制模块详细案例分析

    1.引入Shiro的Maven依赖 <!-- Spring 整合Shiro需要的依赖 --> <dependency> <groupId>org.apache.sh ...