2013-07-20 56 views
4

所以我試圖從Windows遷移到Linux。今天我正在嘗試使用Emacs而不是Windows IDE進行編碼和編譯。這是我的示例代碼:爲什麼不g ++覆蓋可執行文件

#include <iostream> 

using namespace std; 

int main() { 
    cout << "HELLO" << endl; 
} 

其中我使用從emacs的編譯ESC-X->編譯期>克++ -o你好HELLO.CPP

從終端,我使用」執行你好./hello 」。然後我將我的代碼更改爲'cout < <「HOLA FFS」< < endl;'並嘗試再次使用g ++ -o hello hello.cpp進行編譯。編譯完成沒有錯誤,但是當我試圖從終端執行hello時,輸出是「HELLO」,而不是「HOLA FFS」。

它爲什麼這樣做?

回答

0

你應該檢查的接受的回答這個問題:

Emacs fastest C++ compilation process?

基本上從那裏的代碼(你應該粘貼到~/.emacs)將:

  1. 自動保存文件
  2. 生成Makefile,如果它尚未存在
  3. 運行compile
  4. 如果compile成功完成,則運行程序,否則顯示第一個錯誤。

而這一切只用F5 :)

2

可能的原因是您在更改代碼後未保存代碼。我認爲這不一定與emacs有關。請記住經常使用C-x C-s。

+0

emacs的實際提示是在編譯之前,所以這不是它。 –

+0

@BenjaminLindqvist嗯......當你找到解決方案時,讓我知道。 – lulyon

+0

這很奇怪。當我編輯代碼時,我認爲我實際上正在編輯另一個緩衝區,而不是與原始代碼綁定的緩衝區。因此,保存到新的緩衝區不會影響hello.cpp,但會有一些其他奇怪的文件。 –

相關問題