Редът прави следното в ред:
- Тества дали
argc == 2
– тоест дали има точно 1 аргумент от командния ред (първият „аргумент“ е името на изпълнимия файл)
- Ако е така (тъй като ако
argc
не е 2, късо съединение &&
ще прекъсне теста, без да оценява дясната страна), задава src
на резултата от cvLoadImage
, извикан на този аргумент от командния ред
- Тества дали този резултат (и следователно
src
) не е нула
argc
и argv
са имената (почти винаги), дадени на двата аргумента, взети от функцията main
в C. argc
е цяло число и е равно на броя на аргументите на командния ред, налични при извикването на изпълнимия файл. argv
е масив от char*
(представляващ масив от низове, завършващи с NULL), съдържащ действителните стойности на тези аргументи на командния ред. Логично, той съдържа argc
записа.
Имайте предвид, че argc
и argv
винаги имат името на изпълнимия файл като първи запис, така че следното извикване на команда:
$> my_program -i input.txt -o output.log
...ще постави 5 в argc
, а argv
ще съдържа петте низа my_program
, -i
, input.txt
, -o
, output.log
.
Така че вашият цитиран if-тест проверява първо дали има точно 1 аргумент от командния ред, освен името на изпълнимия файл (argc == 2
). След това се използва този аргумент (cvLoadImage(argv[1], 1)
)
Проверката на argc
и след това използването на argv[n]
е често срещан идиом, защото е небезопасно за достъп след края на масивът argv
.
person
Chowlett
schedule
31.05.2013