Re: [問題]linux 底下寫C++

看板C_and_CPP作者 (www.eJob.gov.tw)時間15年前 (2009/07/09 21:40), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《e12518166339 (耐綸)》之銘言: : 不好意思 : 我是一個新手關於寫程式也是新手 : 我的作業系統是UBUNTU並不是因為我喜歡用LINUX而是因為我的需求是文書而已 : 沒要玩遊戲所以用LINUX可以避免掉很多不必要的麻煩 : 扯遠了 : 我有幾個問題要問 : 首先第一個問題是 : 我想學寫C++ : 於是我借來了C++ PRIMER 4/E 還C++程式藝術設計 5 : 由於爬文後發現大家比較推前者 : 於是我開始了學習之路 : 我才剛翻沒幾頁就碰到了第一個問題 : 我在終端機下是使用VIM來寫程式碼 : 但是副檔名到底要取.cc .C .cpp那個才對? 在 Win 都是用 .c 代表 C語言原始碼,.cpp 代表 C++原始碼,這牽涉到 當你使用的工具可以同時編譯成 C/C++ 時,如果你沒有指定選項,他就用副檔名判斷。 你用 C++ Primer 就都用 C++ 的就好 .cc 也是 C++ 但 Windows 常用的 VC 編譯器好像沒在理 .cc http://filext.com/file-extension/cc : 我照個書中的範例prog1 : int main() : { : return 0; : } : 之後用g++ prog1.cc : 然後在終端機上打/.a.out : 接著是 echo $? : 這裡有幾個小問題 : 問題1:我再終端機底下用g++那是不是代表我編譯了prog1了呢? 就我所知,gcc 跟 g++ 是整合很多功能的前端指令,換言之,其實他可以做很多事。 你打 g++ 1.cpp 預設是會產生一種可執行檔,且預設檔名是 a.out 沒錯 相當於 a.exe 功用。 詳細的話,你應該養成用 man 查詢該指令手冊的習慣 (manual),也就是執行 man g++ 或用 google : 再來是echo $?這是什麼意思? 這應該是終端機也就是 Windows 說的 命令直譯器、MS-DOS 模式,下使用的 script 語言 Ubuntu 跟很多 Linux 發行版本都是用 bash。 bash 的變數都用 $ 開頭,後接變數名稱,相對於 Win 是用 %變數名稱% $? 是一種特殊變數,會傳回你最後執行程式的 return 值,相對於 Win 是 %errorlevel% 而 echo 指令就是用來印出字串的指令,類似 C 的 printf http://linux.vbird.org/linux_basic/0320bash.php : 後來下面的練習要我把返回0改成-1 : 我改了之後也沒有顯示任何錯誤 : 一樣echo $0 之後終端機還是顯示0 應該是 echo $? 注意大小寫有別,全形半形有別 : 然後我想沒想太多繼續接著看1.2章輸入與輸出 : 我跟著打了範例2 : #include <iostream> : int main() : { : std::cout<< "Enter two number:" << std ::end1; : int v1 v2 : std::cout<< "The sum of"<< v1 <<" and " <<v2 : << "is"<< v1+v2 << std::end1; : return; : } : 之後我的終端機執行結果為下 : ylon7@nylon7-desktop:~/文件$ vim book.C : nylon7@nylon7-desktop:~/文件$ g++ book.C 最好改小寫 .cpp 或 .cc 畢竟你是在寫 C++ : book.C: In function 「int main()」: : book.C:4: 錯誤: 「end1」 不是 「std」 的成員 檔案 book.C 第四行有錯 : book.C:5: 錯誤: expected initializer before 「v2」 v2, v2 沒有接分號,也沒有給初始值 : book.C:8: 錯誤: 在回傳 「int」 的函式中,回傳敘述不帶回傳值 要 return 整數值 : nylon7@nylon7-desktop:~/文件$ cd 文件 : bash: cd: 文件: 沒有此一檔案或目錄 找不到檔案或目錄,名字是「文件」,錯誤訊息寫得很白了吧 : nylon7@nylon7-desktop:~/文件$ ls : book.C : nylon7@nylon7-desktop:~/文件$ mv book.C book.cc : nylon7@nylon7-desktop:~/文件$ ls : book.cc : nylon7@nylon7-desktop:~/文件$ g++ book.cc : book.cc: In function 「int main()」: : book.cc:4: 錯誤: 「end1」 不是 「std」 的成員 : book.cc:5: 錯誤: expected initializer before 「v2」 : book.cc:8: 錯誤: 在回傳 「int」 的函式中,回傳敘述不帶回傳值 : nylon7@nylon7-desktop:~/文件$ vim book.C : nylon7@nylon7-desktop:~/文件$ ls : book.C book.cc : nylon7@nylon7-desktop:~/文件$ rm -r book.C : nylon7@nylon7-desktop:~/文件$ vim book.cc : nylon7@nylon7-desktop:~/文件$ g++ book.cc : book.cc:2:1: 錯誤: 整數常數的「int」字尾無效 : book.cc:2: 錯誤: expected unqualified-id before numeric constant : 請問各位大大我這中間到底出了什麼問題?? : 不好意思麻煩各位了 $vim 123.cpp #include <iostream> int main(void){ std::cout << "enter 2 numbers: "; int a=-1, b=-1; //定義兩整數,並都初始化其值為 -1 std::cin >> a >> b; std::cout << "a+b = " << a+b << std::endl; } Esc :wq $g++ 123.cpp $./a.out $echo $? 正確應該是這樣吧,現在沒裝 Linux -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.130.12

07/10 01:39, , 1F
.C (大草 C) 其實也是 Unix 常用的 C++ file extension
07/10 01:39, 1F

07/10 01:40, , 2F
.C .cc .cpp .cxx 四者都是(好像沒別的了吧?)
07/10 01:40, 2F

07/10 03:05, , 3F
原來大寫.C也是...原來我也忘了打 return 0
07/10 03:05, 3F

07/10 11:13, , 4F
main program不需要打return 0 沒關係
07/10 11:13, 4F

07/10 12:29, , 5F
07/10 12:29, 5F

07/10 13:00, , 6F
.C也是c++很神奇 當出還真的被困擾過
07/10 13:00, 6F
文章代碼(AID): #1ALVDIoR (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1ALVDIoR (C_and_CPP)