[爆卦]linux執行檔副檔名是什麼?優點缺點精華區懶人包

為什麼這篇linux執行檔副檔名鄉民發文收入到精華區:因為在linux執行檔副檔名這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者zlw (www.eJob.gov.tw)看板C_and_CPP標題Re: [問題]linux ...


※ 引述《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
adrianshum:.C (大草 C) 其實也是 Unix 常用的 C++ file extension 07/10 01:39
adrianshum:.C .cc .cpp .cxx 四者都是(好像沒別的了吧?) 07/10 01:40
zlw:原來大寫.C也是...原來我也忘了打 return 0 07/10 03:05
Goodwater:main program不需要打return 0 沒關係 07/10 11:13
zlw:嗯 07/10 12:29
final01:.C也是c++很神奇 當出還真的被困擾過 07/10 13:00

你可能也想看看

搜尋相關網站