最近在忙計程專題,不過最近討論的時候遇到了一個問題。
由於主要的程式都是我負責,我的編輯器是使用dve c++4.9.9.2
而我在程式之中加入了sleep函式來防止cpu滿載。
但是我把程式傳給別人用VC6.0編譯時出了問題
問題就出在這個sleep function
我不用include <windows.h>就可以使用sleep();
但是別人連include進去之後還是不能編譯,會出現重複定義的問題(msn上討論的結果?)
因為我手邊沒有VC,而且找了很久只找到
#include <windows.h>
Sleep();//s要大寫
或者是
_sleep();//免include windows.h的方法
請問一下以上的方法是否正確?或者是有其他的解決問題。
===
由於原碼一大串,大致上是這個樣子。
#include <allegro.h>
int ...
...
while(...)
{
...
sleep(0);
}
...
sleep都是加在while loop尾端。
謝謝。
Dev C++ :
要include windows.h,Sleep跟_sleep都可以用。
VC 6.0:
要include windows.h,Sleep跟_sleep都可以用。
VC 2008 Express:
要include windows.h,Sleep跟_sleep都可以用。
但使用_sleep的話,編譯過程會有警告訊息,不過編譯可以過,也能執行。
這是測試程式碼:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
cout << "TEST\n";
Sleep(2);
system("PAUSE");
return EXIT_SUCCESS;
}
跟你的結果似乎不太一樣,要猜問題的話恐怕猜不出所以然,我是建議你的小組全部用統一的編譯器會比較妥當。另外需要VC的話,微軟有推出Visual Studio C++ 2008有Express版(完全免費,也有中文介面,有live ID就可以申請序號),可以編譯簡易的C程式,沒用到MFC的話這個其實也很好用了。
詳情可以看這裡:
http://www.microsoft.com/express/download/
但是,其中主要的function不會差太多。
我想應該是你和你的partner溝通上可能有些誤會,
而不論是_sleep或是Sleep這兩個函式,
VC或是DevC++都是有支援的,
在使用_sleep時或許不需要include header file,
然而我建議你,
還是將定義_sleep的header file(stdlib.h),
include至你的cpp file裡頭,以避免compiler error。
若是要使用Sleep,
則將其定義檔(windows.h) include至你的cpp裡頭,
相信這麼一來應該即能compiler成功。
DevC++是個檔案小的freeware(大概5、60MB吧),
相較於VC或是VC2008 Express都小得太多了。
(因為VC2008 Express尚需安裝一堆的framework)
若是僅需以C++/C來寫專案,
我倒覺得不一定要使用VC來開發專案。
另外,我建議你可以多和你的partner多多討論或是多做些實驗,
如此在coding上必能有更多發現的。
alvine0926 wrote:
只是要寫個C檔但是找不到從哪裡開始...(恕刪)
從「說明」開始就對了。
其實要弄懂VC2008Express的IDE使用方法也不是那麼難的事情,又有中文化的加持。我一開始也是摸不著腦,「Build」被翻譯為「建制」,「執行」被擺到「除錯」裡面,但耐心按照「說明」的內容一一去操作後,就差不多都理解了。另外VC2008也直接提供在命令列下編譯C的功能,意思就是設計師只要直接提供C原始檔,就可以直接編譯了。
像這些操作等等,在「說明」裡面都講得滿詳細的,也有提供範例程式碼。
我是覺得雖然DevC很好用,但是VC還是要去熟悉一下,畢竟是有相當佔有率的編譯程式,而且微軟提供的線上資源也頗豐富。
個人一點淺見這樣。
內文搜尋

X