精華區beta Programming 關於我們 聯絡資訊
有兩個程式 main.cc 以及 foo.cc main.cc 裡頭宣告了一個全域變數 #include<iostream> using namespace std; int x; void foo(void); int main(void){ foo(); // 呼叫 foo.cc的那個 function cout<<"The value:"<< x << endl; return 0; } foo.cc 裡頭只有一個 function 作遞增的動作 void foo(void){ x++; } 編譯指令如下: # g++ main.cc foo.cc 編譯過程有錯誤, x 在 foo裡頭沒有宣告 我應該如何修改才能正常編譯並執行呢 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.216.185.23
Neo1978:用 Makefile,趁這時候練習一下吧.. XD 61.217.231.114 10/18 15:02
dozer:Makefile極好用 學了絕不吃虧 140.109.176.19 10/18 15:27
ledia:他的問題跟 Makefile 有什麼關係嗎? @@ 140.112.30.56 10/18 15:37
ledia:看一下 extern 的用法 140.112.30.56 10/18 15:37
dozer:在linux板有回了 140.109.176.19 10/18 15:58
> -------------------------------------------------------------------------- < 發信人: tinlans.bbs@whshs.cs.nccu.edu.tw (汀), 看板: Programming 標 題: Re: [問題] linux下多個檔案如何同時編譯 發信站: 政大狂狷年少 (Wed Oct 18 18:14:29 2006) 轉信站: ptt!ctu-reader!ctu-gate!news.nctu!newsfeed.nthu!news.cs.nthu!WHSHS ※ 引述《tedpola.bbs@ptt.cc (破破茶杯)》之銘言: > 有兩個程式 main.cc 以及 foo.cc > main.cc 裡頭宣告了一個全域變數 > #include<iostream> > using namespace std; > int x; > void foo(void); > int main(void){ > foo(); // 呼叫 foo.cc的那個 function > cout<<"The value:"<< x << endl; > return 0; > } > foo.cc 裡頭只有一個 function 作遞增的動作 > void foo(void){ > x++; > } > 編譯指令如下: # g++ main.cc foo.cc > 編譯過程有錯誤, x 在 foo裡頭沒有宣告 > 我應該如何修改才能正常編譯並執行呢 > 謝謝! 方法一: 在 foo.cc 放一行 extern int x; 方法二: 新增一個 main.h 裡面擺一行 extern int x; 並讓所有用到 x 的 .cc 檔 #include "main.h" 當然連 main.cc 都可以這麼做, 不過 main.cc 裡原本的 int x; 還是要保留不能拿掉。 編譯方面, 你除了用上面那種方法一次編完之外, 也能分別編譯最後才連結: g++ -c main.cc g++ -c foo.cc g++ main.o foo.o -o 執行檔檔名 因為編譯 C++ 程式所花的時間, 即使是 2006 年的現在還是不太能讓人接受, 所以建議是分開編譯, 不必每改一個檔案就全部通通重編。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Undecided Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-216-250.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩