аргументы командной строки для выполнения программы на C ++ - PullRequest
0 голосов
/ 25 апреля 2018

это основная часть моей программы на c ++:

void main(int argc, char** argv, Arguments& arguments)

первый аргумент - это файл, а остальные - логические значения.
Мне было интересно, каков правильный синтаксис командной строки дляскомпилируйте программу.
Я пытался:

gcc  -o "argument1" "argument2" "argument3" prog.cpp  

и

g++ -std=c++11 -o "argument1" "argument2" "argument3" prog.cpp

, но я получаю эту ошибку:

linker command failed with exit code 1 (use -v to see invocation)

Я сомневаюсь, что яневерная передача аргументов, и поэтому моя программа неправильно ссылается на входной файл (аргумент1).
спасибо, что поправили меня.

Ответы [ 4 ]

0 голосов
/ 25 апреля 2018

Основная функция определяется следующим образом:

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

или

int main (int argc, char **argv)

Насколько я понимаю, argc = Количество аргументов и argv = Вектор аргументов.argc - это количество аргументов (вы можете выбрать сколько), а argv содержит это количество аргументов, которые содержат все фактические данные, которые вы хотите передать в вашу программу из командной строки.Но помните, что всегда есть хотя бы один аргумент, который стоит первым: имя программы.

Они используются не во время компиляции, а во время выполнения.Запуск программы отличается от компиляции и компоновки, которые должны быть выполнены в первую очередь (с использованием gcc, в вашем случае).

0 голосов
/ 25 апреля 2018

Кажется, вы новичок, потому что много смешались!

Сначала вы должны скомпилировать вашу программу. Для программы cpp обычно используется g ++. Так что скомпилируйте это с

g++ -Wall -o prg prg.cpp

После этого вы должны изменить свой доступ с помощью

chmod +x prg

чтобы иметь возможность вызвать программу.

Теперь вы можете вызывать вашу программу с аргументами:

./prg arg1 arg2 arg3
0 голосов
/ 25 апреля 2018

Аргументы главного и командной строки

Main может иметь одну из двух форм :

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

В первой форме вы не можете передавать аргументы. Во второй форме argc - это число аргументов, переданных в командной строке, а argv - это массив char* (строки в стиле c) длиной argc, содержащий аргументы командной строки.

Так, например, если вы назвали свою программу как

./program apple bananna carrot date

Тогда argc будет равно 5, а argv будет содержать следующие значения:

argv[0] = "./program" -- the name of your program as called on the command line. 
argv[1] = "apple"
argv[2] = "bananna"
argv[3] = "carrot"
argv[4] = "date"

Компиляция и запуск вашей программы

C ++ не является интерпретируемым языком и поэтому должен быть скомпилирован. Предполагая, что у вас есть исходный код в файле с именем program.cpp, и вы хотите, чтобы ваш исполняемый файл назывался program, вы бы вызвали g++ следующим образом:

g++ -o program program.cpp

Если вы ls текущий каталог, вы должны увидеть файл с именем program в каталоге рядом с вашим исходным кодом. Теперь вы можете запустить эту программу (опять же, если вы назвали выходной файл program)

./program arg1 arg2 arg3

и строки arg1, arg2 и arg3 будут переданы в main, как описано выше.

0 голосов
/ 25 апреля 2018

C ++ кодирование / выполнение программы выглядит следующим образом (по крайней мере, для простых однофайловых программ):

Шаг 1: написать код, скажем, в файле с именем prog.cpp

Шаг 2. Скомпилируйте код в исполняемый файл. В нашем случае g++ -o myprog prog.cpp

Шаг 3: Запустите программу. В нашем случае myprog "argument1" "argument2" "argument3"

...