文档章节

QtCreator调试传入运行参数

o
 osc_pn11u1x9
发布于 2018/08/06 10:30
字数 956
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

QtCreator是非常不错的IDE, 当需要在调试的时候为 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 内容是操作系统传入的环境变量字符串,同样是一个字符串数组。

 

1、int main(int argc, char *argv[]):

其中argv为指针的指针可以char **argv or: char *argv[] or: char argv[][]来表示,argc为整数

2、具体用法看下面的例子:

(1)假设程序的名称为program ,当执行程序时只输入./program,则由操作系统传来的参数为argc=1,表示只有程序名称,argv[0]指向输入的程序路径及名称。

(2)当执行程序时输入./program -10,则由操作系统传来的参数为argc=2,表示除了程序名外还有一个参数,其中argv[0]指向输入的程序路径及名称,argv[1]=10;

(3)当执行程序时输入./program -10,-a,则由操作系统传来的参数为argc=3,表示除了程序名外还有一个参数,其中argv[0]指向输入的程序路径及名称,argv[1]=10;argv[2]=a。

总结:int main(int  argc, char *argv[] )  ,char  *argv[] :argv 是一个指针数组,他的元素个数是argc,存放的是指向每一个参数的指针,他的第一个元素即argv[0]为编译生成的可执行文件名(包括路径eg:"/home/c/qt/test-build-desktop-Desktop_Qt_4_8_7_for_GCC__Qt_SDK__Release/test" 从二个元素(argv[1])开始,是每一个参数   int  argc 表示argv的大小,是实际参数个数+1,其中+1是因为argv[0]是编译后的可执行文件名。

 

 

以下提供一样例程序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: 

 


    ./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      /*视具体设置而定*/

 

  参考:https://blog.csdn.net/desert187/article/details/40781225

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

浅谈对python pandas中 inplace 参数的理解

这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否...

Linux就该这么学
51分钟前
20
0
C++ 从基本数据类型说起

前言 int 在32位和64位操作系统,都是四个字节长度。为了能编写一个在32位和64位操作系统都能稳定运行的程序,建议采用std::int32_t 或者std::int64_t指定数据类型。*与long随操作系统子长变...

osc_sxdofc9c
51分钟前
9
0
游戏音乐的作用以及起源

游戏音乐是由特殊的音乐、语言符号、美学符号组成,在电子游戏的发展下,游戏音乐越来越成熟,游戏音乐与美术相融合,能够带给玩家视觉与声音的感官冲击,形成游戏音乐所具有的独特的审美效果...

奇亿音乐
51分钟前
10
0
2020,最新Model的设计-APP重构之路

很多的app使用MVC设计模式来将“用户交互”与“数据和逻辑”分开,而model其中一个重要作用就是持久化。下文中设计的Model可能不是一个完美的,扩展性强的model范例,但在我需要重构的app中,...

osc_mfzkzkxi
52分钟前
4
0
面对职业瓶颈,iOS 开发人员应该如何突破?

我们经常看到 iOS 开发人员(各种能力水平都有)的一些问题,咨询有关专业和财务发展方面的建议。 这些问题有一个共同点:前面都会说“我现在遇到了职业困境”,然后会问一些诸如“我是否应该...

osc_gfpedeca
53分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部