2011-11-11 8 views
0

何らかの理由で、私はC++でexit()関数を使いこなしています。私は私のマックランニングライオン(64ビット)からあらゆる種類の奇妙なエラーが出ています。私はg++ -o -g -Wallを使ってコンパイルしています。C++でexit()を使用する

別紙A:

#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>を使用すると、同じコンパイルエラーが発生します。

ここで何が起こっているのか誰でもすぐに確認できるのではないかと疑問に思っていますか?

+3

を、タイトルに暗示質問への短い答えは、あなたが一般的にC++における 'exit'を避けたいということです。 –

+0

ありがとう、私は将来、代わりに 'return'を使用すると思います。 – wbarksdale

答えて

8

testが生成するバイナリの名前で、あなたの最初の引数リストは以下のようになります。

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

そして、 'test'は多くのシェルに組み込まれていることに注意してください。ローカルディレクトリに' test'という名前の実行可能ファイルがあっても、単に 'test'を起動しても実行できません。 ( '。/ test'でプログラムを起動することもできますし、別の名前を付けてもかまいません)。 –

2

-oは出力ファイルの名前の直後ことを意味しています。おそらく古いバイナリ 'test'をソースファイルとして間違って使用しようとしています。

はこのお試しください:関係なく、手で正確な問題の

g++ -o test -g -Wall main.cpp 
関連する問題