Moi*_*rae 2 c opencv argv argc
我正在检查一些OpenCV教程并在开头找到这一行(这里是链接,代码在CalcHist部分http://opencv.willowgarage.com/documentation/c/histograms.html)
if (argc == 2 && (src = cvLoadImage(argv[1], 1)) != 0)
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个,真的不明白.我检查了一些有关此主题的问答,但仍然不理解.有人可以向我解释这条线的含义是什么?
谢谢!
该行按顺序执行以下操作:
argc == 2- 也就是说,如果只有1个命令行参数(第一个"参数"是可执行文件名)argc不是2,短路&&将中止测试而不评估右侧),则设置src为cvLoadImage调用该命令行参数的结果src)是否不为零argc并且C中函数argv获取的两个参数的名称(几乎总是)是一个整数,并且等于调用可执行文件时存在的命令行参数的数量.是一个数组(表示以NULL结尾的字符串数组),包含这些命令行参数的实际值.从逻辑上讲,它包含条目.mainargcargvchar*argc
请注意,argc并argv始终将可执行文件的名称作为第一个条目,因此以下命令调用:
$> my_program -i input.txt -o output.log
Run Code Online (Sandbox Code Playgroud)
...将把5 argc,和argv将包含五个字符串my_program,-i,input.txt,-o,output.log.
所以你引用的if-test首先检查除了可执行文件名(argc == 2)之外是否只有1个命令行参数.然后它继续使用该参数(cvLoadImage(argv[1], 1))
检查argc然后使用argv[n]是一种常见的习惯用法,因为在数组末尾之外访问是不安全的argv.
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |