Использование exit() в c

#c #std

#c #std

Вопрос:

По той или иной причине я путаюсь с функцией exit () в c . Я получаю всевозможные странные ошибки с моего Mac под управлением lion (64-разрядная версия). Я компилирую с помощью g -o -g -Wall .

Демонстрируют:

  #include <iostream>
 int main(int arc, char *argv[]){
     exit(1);
 }
  

Вывод терминала выглядит следующим образом

  $ g   -o -g -Wall test main.cpp
 ld: in test, can't link with a main executable for architecture x86_64
 collect2: ld returned 1 exit status
  

но $ g -o test main.cpp компилируется нормально.

использование #include<stdio.h> или #include<stdlib.h> приводит к той же ошибке компиляции.

Мне просто интересно, сможет ли кто-нибудь сразу увидеть, что здесь происходит?

Комментарии:

1. Независимо от конкретной проблемы, короткий ответ на вопрос, подразумеваемый в названии, заключается в том, что вы обычно хотите избежать exit в C .

2. Спасибо, я полагаю, что буду использовать return в будущем вместо этого.

Ответ №1:

test это имя создаваемого двоичного файла, ваш первый список аргументов должен быть:

 > g   -g -Wall -o test main.cpp
               ^^^^^^^ -o has test for an argument
  

Комментарии:

1. И имейте в виду, что это test встроено во многие оболочки, поэтому, даже если у вас есть исполняемый файл с именем test в локальном каталоге, простой вызов test его не получит. (Вы можете либо вызвать программу с помощью ./test , либо назвать ее как-то иначе.)

Ответ №2:

значение -o должно сразу следовать за именем выходного файла. Вероятно, он пытается неправильно использовать ваш старый двоичный файл ‘test’ в качестве исходного файла.

Попробуйте это:

 g   -o test -g -Wall main.cpp