Основная задача Objective-c, что такое: int argc, const char * argv [] - PullRequest
18 голосов
/ 02 января 2011

Какие аргументы передаются в основной метод программы командной строки:

int main(int argc, const char * argv[])

что означает первый int?

А что за второй параметр, это массив символов?

Как их использовать?

Кроме того, какое практическое применение имеет тип проекта командной строки, кроме использования его для изучения obj-c, то есть для практики.

Ответы [ 6 ]

28 голосов
/ 02 января 2011

argc означает «количество аргументов». Это показывает, сколько аргументов передается в исполняемый файл. argv означает «значения аргумента». Это указатель на массив символов. Или, если подумать об этом, это массив строк C (так как строки C - это просто массивы символов).

Итак, если у вас есть программа "foo" и она выполняется следующим образом:

foo -bar baz -theAnswer 42

Тогда в вашей функции main(), argc будет 5, а argv будет:

argv[0] = "/full/path/to/foo";
argv[1] = "-bar";
argv[2] = "baz";
argv[3] = "-theAnswer";
argv[4] = "42";
5 голосов
/ 02 января 2011

Параметры main() - это соглашение Unix для доступа к аргументам, указанным в командной строке при выполнении вашей программы. В приложении Какао вы можете обращаться к ним простым старым способом C, или вы можете использовать метод NSProcessInfo - arguments, чтобы получить их в NSArray из NSString объектов, или использовать NSUserDefaults, чтобы получить их как значения в словаре.

3 голосов
/ 02 января 2011

Просто чтобы добавить к другим ответам - Objective-C ориентирован как на OS X, так и на iOS. И хотя в приложениях командной строки для iOS нет особой ценности, оболочка для OS X все еще широко используется, и многие люди пишут инструменты для командной строки.

2 голосов
/ 02 января 2011

Как Википедия (и любой другой источник говорит):

int main(void)

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

Параметры argc, аргументcount и argv, вектор аргументов, соответственно дают число и значение аргументов командной строки программы.Имена argc и argv могут быть любыми допустимыми идентификаторами в C, но принято использовать эти имена.В C ++ имена должны восприниматься буквально, а "void" в списке параметров следует опускать, если требуется строгое соответствие.Другие форматы, зависящие от платформы, также допускаются стандартами C и C ++, за исключением того, что в C ++ тип возвращаемого значения должен оставаться int;например, Unix (но не POSIX.1) и Microsoft Windows имеют третий аргумент, задающий среду программы, в противном случае доступ через getenv в stdlib.h:

int main(int argc, char **argv, char **envp)

2 голосов
/ 02 января 2011

Это главное из C и не специфично для target-c. Argc дает вам количество аргументов командной строки, переданных вашей C-программе. Argv представляет собой массив строк C и содержит аргументы командной строки.

Вы будете использовать их и проект командной строки в любое время, когда захотите написать инструмент командной строки или программу, с которой вы взаимодействуете из командной строки.

0 голосов
/ 27 февраля 2015

Кроме того, какое практическое применение имеет тип проекта командной строки, кроме использования его для изучения obj-c, то есть для практики.

Практическое применение - создание инструмента командной строки с использованием кода из написанного вами Framework или приложения. Помощники, утилиты, агенты запуска и демоны, все эти фоновые процессы обычно реализуются как инструменты командной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...