2011-11-11 39 views
0

由於某種原因,我在C++中調用exit()函數。我從我的mac運行獅子(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

不管手頭確切的問題,簡單的答案在標題中隱含的問題是,你通常要避免'exit'在C++中。 –

+0

謝謝,我想我將在未來使用'return'。 – wbarksdale

回答

8

test是二進制生產的名字,你的第一個參數列表應該是:

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

並且請注意''test'是一個內置的shell,所以即使你在本地目錄下有一個名爲test的可執行文件,只要調用test就不會得到它。 (你可以用'。/ test'調用該程序,或者將其命名爲其他內容。) –

2

-o,就是要通過輸出文件的名稱後面緊跟。它可能是錯誤地嘗試使用舊的二進制「測試」作爲源文件。

試試這個:

g++ -o test -g -Wall main.cpp 
相關問題