2013-03-12 109 views
1

我在C++中遇到了困難。 我做了一個編譯好的YouTube世界和main.o. 我運行該程序,它打印hello world,但後來說YouTube.exe已停止工作。 即使我將main.o移動到不同的目錄,YouTube.exe仍會打印hello world並停止工作! 所以我有兩個問題: 1.爲什麼當main.o被刪除時程序仍然打印hello world? 2.爲什麼程序停止工作?這是代碼:C++ .exe停止工作

main.cpp: 

#include<iostream> 

using namespace std; 

int main(){ 

    int a; 
    cout << "Hello World!"; 
    cin >> a; //to make the program pause 

    return 0; 
} 
+0

你也可以使用cin.get()來暫停程序;它看起來比cin >> a;更清潔一些。 – Inisheer 2013-03-12 19:31:14

回答

2

因爲.o文件將是包含程序的object file,但它仍然是被鏈接並搬遷到一個真正的可執行二進制文件。

這意味着YouTube.exe已經包含main.o中的內容,但是採用可執行格式。

實際發生的是編譯器產生的.o 文件(本身編譯每個目標文件),然後鏈接器鏈接所有的.o文件一起,解決任何扶養和搬遷所需要的生產真實.exe文件。

+0

好的,但爲什麼程序停止工作? – 2013-03-12 19:31:04

+0

根據您發佈的內容,您使用的是哪種編譯器,代碼是否正確? – Jack 2013-03-12 19:32:19

+0

mingw編譯器。我不知道它可以用不同的方式編譯。 – 2013-03-12 19:33:19

相關問題