#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