C語言的sleep function問題(VC/DevC++)

最近在忙計程專題,不過最近討論的時候遇到了一個問題。

由於主要的程式都是我負責,我的編輯器是使用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尾端。


謝謝。



2009-01-21 18:14 發佈
應該是 編譯器的關係..就是 vc 跟 dev c 的差別
vc 的定義
Sleep() 在 window.h 裡面
dec c 的的定義

_sleep() 在 stdio.h 裡面


我測的結果是這樣:

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/
其實兩個IDE各自有不同內容的header file,
但是,其中主要的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上必能有更多發現的。
的確如果不是很需要的話,Dev C++輕簡多了,而且執行效率也不錯。
我的筆電跑VC 2008 Express,執行DOS視窗出來後,執行內容都會頓一下
很感謝三位的解答。

其實其他人在處理我的程式的時候,最後是直接將sleep函式給去掉…

不過計程專題沒有錯誤地結束了。

---

VC2008Express以前有玩過,不過因為介面跟VC差太多,只是要寫個C檔但是找不到從哪裡開始,所以最後就移除了…

現在用Dev C++是用得很愉快,但是不曉得要怎麼debug…
alvine0926 wrote:
只是要寫個C檔但是找不到從哪裡開始...(恕刪)

從「說明」開始就對了。

其實要弄懂VC2008Express的IDE使用方法也不是那麼難的事情,又有中文化的加持。我一開始也是摸不著腦,「Build」被翻譯為「建制」,「執行」被擺到「除錯」裡面,但耐心按照「說明」的內容一一去操作後,就差不多都理解了。另外VC2008也直接提供在命令列下編譯C的功能,意思就是設計師只要直接提供C原始檔,就可以直接編譯了。

像這些操作等等,在「說明」裡面都講得滿詳細的,也有提供範例程式碼。

我是覺得雖然DevC很好用,但是VC還是要去熟悉一下,畢竟是有相當佔有率的編譯程式,而且微軟提供的線上資源也頗豐富。

個人一點淺見這樣。
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?