導航:首頁 > 源碼編譯 > 編譯睡眠函數庫

編譯睡眠函數庫

發布時間:2024-07-02 03:36:16

Ⅰ c++vs緙栬瘧鐫$湢鍑芥暟搴撳彨浠涔

Sleep鍑芥暟瀛樻斁澶存枃浠訛細WinBase.h
Sleep鍑芥暟鐢ㄤ簬灝嗙▼搴忔寕璧蜂竴孌墊椂闂淬
鍑芥暟鍘熷瀷錛voidSleep(DWORDdwMilliseconds);
鍙傛暟涓DWORD綾誨瀷鐨刣wMilliseconds錛岃〃紺虹潯鐪犵殑鏃墮棿錛屽崟浣嶄負姣縐掋
娉ㄦ剰錛
鍦╒C涓浣跨敤甯︿笂澶存枃浠
#include<windows.h>
錛Sleep鍑芥暟瀛樻斁澶存枃浠訛細WinBase.h錛
鍙﹀栵細
鍦╣cc緙栬瘧鍣ㄤ腑錛屼嬌鐢ㄧ殑澶存枃浠跺洜gcc鐗堟湰鐨勪笉鍚岃屼笉鍚
#include<unistd.h>
Sleep()鍗曚綅涓烘縐掞紝sleep()鍗曚綅涓虹掞紙濡傛灉闇瑕佹洿綺劇『鍙浠ョ敤usleep鍗曚綅涓哄井縐掞級
瀹炰緥錛
#include<windows.h>
#include<stdio.h>
intmain()
{
inta;
a=1000;
printf("浣");
Sleep(a);/*VC浣跨敤Sleep*/
printf("濂");/*杈撳嚭鈥滀綘鈥濆拰鈥滃ソ鈥濅箣闂翠細闂撮殧涓鍗冩縐掞紝鍗抽棿闅斾竴縐掞紝sleep()鐨勫崟浣嶄負姣縐*/
return0;
}

Ⅱ GTK+ 基礎,第 2 部分: 如何使用 GTK+

本文假設讀者熟悉基本的面向對象概念,比如類、對象、方法和繼承。雖然不需要能夠用 C 編寫程序,但是需要對 C 語言的語法有基本的理解。C 語言的 GTK+ 應用程序剖析我發現最好用示例來討論代碼。對於本文來說,我使用一個用 C 編寫的名為 Hello World 的簡短應用程序。雖然短小 —— 而且作為應用程序來說,基本沒什麼用 —— 但是這個應用程序的代碼確實展示了在進行 GTK+ 編程時可能會碰到的一些最有趣的概念(參見清單 1)。清單1. Hello World 應用程序的 GTK+ 代碼 #include <gtk/gtk.h> #include <libintl.h> #define _(x) gettext (x) #define N_(x) (x) #define GETTEXT_PACKAGE "gtk-hello" #define LOCALEDIR "mo" static char *greetings[] = { "Hello World", "Witaj ?wiecie", "世界に今日は" }; static char* choose_greeting () { return greetings[g_random_int_range (0, G_N_ELEMENTS (greetings))]; } static void cb_button_click(GtkButton *button, gpointer data) { GtkWidget *label = GTK_WIDGET(data); g_assert(label != NULL); gtk_label_set_text(GTK_LABEL (label), choose_greeting()); } static gboolean cb_delete(GtkWidget *window, gpointer data) { gtk_main_quit(); return FALSE; } int main (int argc, char *argv[]) { GtkWidget* window, *button, *label, *vbox; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); gtk_init(&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label (_("Hello World")); label = gtk_label_new (choose_greeting()); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER (window), vbox); gtk_container_add(GTK_CONTAINER (vbox), label); gtk_container_add(GTK_CONTAINER (vbox), button); g_signal_connect(G_OBJECT (window), "delete-event", G_CALLBACK(cb_delete), NULL); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (cb_button_click), label); gtk_widget_show_all(window); gtk_main(); return 0; }概述在進入細節之前,先看看運行 Hello World 程序時發生的情況:初始化 GTK+ 和國際化(i18n)支持。創建部件(widget)。部件被組織成層次結構,讓 GTK+ 知道如何在屏幕上顯示它們。兩個信號處理器被連接起來 —— 一個用來在用戶關閉窗口時退出應用程序,另一個用來在用戶點擊按鈕時,修改顯示的歡迎信息。在屏幕上顯示窗口,應用程序調用 gtk_main(),激活主循環。主循環一直運行,直到用戶關閉窗口,調用 gtk_main_quit() 時才結束。初始化以下幾行初始化 GTK+ 和 i18n 支持:清單2. 初始化 GTK+ 和 i18n 支持 int main (int argc, char *argv[]) { GtkWidget* window, *button, *label, *vbox; bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); gtk_init(&argc, &argv); C 程序員應當熟悉 main 聲明。(如果不是 C 程序員,那麼只需要知道這是應用程序開始執行的函數。)下一行包含幾個到 GtkWidget 類型的指針的聲明。GTK+ 是一個面向對象的工具包。所以,它使用常見的面向對象概念(例如繼承)來實現不同的部件。作為語言,C 缺乏對面向對象的內置支持。GTK+ 通過使用一些更聰明的技巧和 C 標准要求的一些有幫助的屬性,克服了這個缺點。在這個方案中,對象由指針代表,而 GtkWidget 是GTK+ 層次結構中的基本類型 —— 叫做 類,其他類都從它派生而來。所以,我把變數聲明為 GtkWidget*。下三行是在程序開始的地方應當包含的調用,用來得到國際化介面的支持。注意,在真實的應用程序中,不會手動聲明 LOCALEDIR 和GETTEXT_PACKAGE。編譯系統將會處理這些聲明。但是,在這個簡單示例中,聲明有助於澄清需要的內容。最後一行調用 gtk_init()。在進行其他 GTK+ 調用之前,必須調用這個函數,並把調用程序使用的參數傳遞給它。如果這個調用失敗,就會從沒有機會正確初始化自己的各個子系統得到多個錯誤消息。創建部件這四行分別調用不同的 _new() 函數:清單3. 調用不同的 _new() 函數 window = gtk_window_new (GTK_WINDOW_TOPLEVEL); button = gtk_button_new_with_label (_("Hello World")); label = gtk_label_new (choose_greeting()); vbox = gtk_vbox_new(FALSE, 0); 關於TOPLEVEL 的警告在看到 gtk_window_new 的TOPLEVEL 參數之後,可能想知道是否有其他可能的窗口類型。實際上,確實有。但是,對於 TOPLEVEL 之外的類型的需要很少見。而且,要使用不同的類型,必須對 GTK+ 與窗口系統的交互方式有很好的理解。所以,規則很簡單:一直 使用TOPLEVEL 參數。正如您所想,這些函數創建新的部件。所以,它們是代表部件的對象的構造函數。在 C++ 中,用特殊的方式標記構造函數,並用特殊語法進行調用。但是,因為 C 不支持面向對象,所以它們與普通的函數沒有什麼不同。只有添加到函數名尾部的 _new() 才表示這些函數實際上是構造函數。規定是:gtk_* 名稱空間中的每個構造函數都返回一個到 GtkWidget 的指針。這樣,通過聲明這種類型的變數,可以直接把構造函數調用的結果分配給對應的變數。如果查看單獨的構造函數,可以看到它們接受不同的參數,對應著它們創建的部件的類型。具體來說,gtk_window_new (GTK_WINDOW_TOPLEVEL) 創建新的 TOPLEVEL 窗口;也就是與用戶看成窗口的東西對應的部件,具有標題欄、關閉按鈕或者窗口系統添加的其他元素。對label 和button 的構造函數的調用做的工作正如您所料。但是,請注意傳遞給 button 的字元串周圍的下劃線和括弧(_())。這個宏調用 gettext() 常式,並且對於界面轉換至關重要。(關於 gettext 的更多信息,請參閱 參考資料。) 模樣古怪的 gtk_vbox_new(FALSE, 0) 創建垂直框(VBox)。雖然這個部件與屏幕上的任何可視像素都不對應,但是它在 GTK+ 的控制項布局中扮演著重要角色,您很快就會看到這一點。 決定布局這三行決定部件的布局: gtk_container_add(GTK_CONTAINER (window), vbox); gtk_container_add(GTK_CONTAINER (vbox), label); gtk_container_add(GTK_CONTAINER (vbox), button); 這些行是對類型 GtkContainer 的面向對象方法的調用。如果查看應用程序編程介面(API)參考,可以看到 GtkContainer 繼承自 GtkWidget,而且它的全部方法都接受 GtkContainer* 作為第一個參數。所以,GtkContainer* 是方法要在上面操作的對象實例。因為變數是 GtkWidget* 類型的,而且 C 編譯器不支持面向對象繼承,所以需要讓編譯器相信:向需要 GtkContainer* 的函數傳遞這些變數是安全的。GTK_CONTAINER() 宏通過實現到類型安全版 GtkContainer 的類型轉換做到了這一點。類型安全 意味著宏在進行類型轉換之前,會驗證指定操作可以在指定類型上安全地執行。如果宏不能執行指定操作,就會提供警告。因為GTK+ 使用方框布局 模型,所以不必顯式地指定部件應當放在屏幕上的什麼位置。相反,要指明部件放在其他哪個窗口部件內。在 Hello World 應用程序中,每個 gtk_container_add() 方法調用都告訴應用程序用第一個參數(或 雙親部件),並把第二個參數(或 子部件)放在雙親部件內。在這個示例中使用的 VBox 部件是一種布局部件,它垂直地排列子部件。這樣,在它內部放置標簽和按鈕時,結果就是按鈕顯示在標簽下。這是需要做的全部工作。如果您曾經用過絕對定位(在某些工具包中使用的模型,例如 Win32)手動調整部件或重新設置部件大小,那麼您會很高興知道在 GTK+ 中所有這些都是自動完成的。連接信號和主循環在創建並組織好部件之後,該給它們添加些邏輯了。GTK+ 像多數 GUI 工具包一樣,是一個事件驅動框架。所以,它是圍繞主循環 組織的。主循環在連續的檢查-分配-睡眠周期上操作。當事件發生時,與這個事件對應的對象發出信號,通知主循環事件已經發生。然後主循環查詢自己的信號和處理程序之間的內部映射表,也叫做 回調,並調用注冊到指定對象的指定信號的處理程序。在Hello World 代碼中,回調的注冊看起來像這樣:清單4. 回調的注冊 g_signal_connect(G_OBJECT (window), "delete-event", G_CALLBACK(cb_delete), NULL); g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK(cb_button_click), label); 請注意在 GTK+ 中,connect(連接) 到信號。第一行把 cb_delete 函數連接到 window 對象的 delete-event 信號。類似地,第二行把 cb_button_click 函數連接到 button 對象的 clicked 信號。請注意在第二個連接調用中的第四個參數 label。稍後會看到它在 cb_button_click 函數中是如何使用的。下面是 cb_delete 函數,它在用戶關閉窗口時退出應用程序: static gboolean cb_delete(GtkWidget *window, gpointer data) { gtk_main_quit(); return FALSE; } static 修飾符 在C 中,static 關鍵字在內部鏈接函數,這意味著靜態函數在聲明它的源文件之外不可見。除非需要在不止一個文件中使用回調,否則請一直使用 static 關鍵字聲明回調。使用這個方法,可以避免把可用函數名稱的有限名稱空間弄混亂。因為靜態函數被局限在一個文件,所以可以安全地重用函數名稱。 這個函數接受 GtkWidget* 和一個未指定的 data 指針(gpointer 是等價於 void* 的類型),因為 "delete-event" 的每個回調都必須符合這個原型。但是,這個函數不需要這些參數,所以它們被忽略了。它調用 gtk_main_quit() 常式以退出主循環。而且,該函數返回布爾值,因為為 GtkWidget 定義的 delete-event 信號的回調原型指明的是布爾返回值。布爾值決定 GTK+ 採取的行動。如果它返回 TRUE 值,那麼事件就被認為已經得到處理,而且不調用默認處理程序(該默認處理程序從窗口系統刪除部件)。有的時候,例如,如果想顯示一條消息,請求尚未保存的數據,並根據用戶的響應阻止窗口關閉,那麼這個函數會很有用。下面是 cb_button_click 函數,在用戶點擊按鈕時,它修改顯示的歡迎信息:清單5. cb_button_click 函數 static void cb_button_click(GtkButton *button, gpointer data) { GtkWidget *label = GTK_WIDGET(data); g_assert(label != NULL); gtk_label_set_text(GTK_LABEL (label), choose_greeting()); } 可以看到,這個函數與 cb_delete 函數類似,不同之處是它什麼也不返回,而且它接受 GtkButton* 而不是 GtkWidget。代碼把 data 轉換成到 GtkLabel 的指針。還記得在回調注冊中的 label 參數么?現在每次調用回調時,data 指針都會包含到那個標簽的指針。每當需要向回調傳遞額外的信息時,都可以使用 data 參數。類似地,如果需要訪問發出信號的對象,就要使用第一個參數,在這個具體回調中是 button。在得到標簽的指針後,代碼使用 g_assert 宏來確定標簽是否等於 NULL。g_assert 宏是一個來自 Glib (GTK+ 使用的一個有用的 C 類型和常式庫)的工具宏,如果傳遞給它的條件滿足,就會中止程序 —— 在這個示例中,條件是 label 等於NULL。因為 label 等於NULL 意味著程序員犯了錯誤,所以這可以確保在代碼投入生產之前捕獲到錯誤。顯示窗口在回調連接好之後,gtk_widget_show_all() 函數使窗口 —— 即所有的部件 —— 都顯示在屏幕上(參見圖 1)。圖1. Hello World 應用程序,用波蘭語和日語運行激活主循環當諸事就位,而且顯示出來之後,gtk_main() 函數就激活主循環。主循環進入無限循環,等候事件並調用回調,直到有人關閉窗口,調用 gtk_main_quit() 為止。注意:如果對代碼仍有問題,請參閱附帶的源代碼。它與文章中介紹的代碼完全相同,但是每一行都包含詳細的注釋。編譯和運行要編譯這個程序,需要 C 編譯器和 GTK+ 的開發文件(頭和庫)。有關如何獲取這些項目的信息,請參閱 參考資料。在安裝完文件之後,請解壓源代碼,進入源代碼將要解壓到的目錄,並運行 make: $ tar -xzf gtk_hello.tgz $ cd gtk_hello $ make 注意:如果正在運行 Microsoft�0�3 Windows�0�3,請不要運行 make,而是打開 Microsoft Visual Studio�6�4.NET 並運行 「hello」 項目。回頁首在其他編程語言中的 GTK+可以在多個編程語言中使用 GTK+。要做到這點,需要使用綁定。綁定 是針對指定語言的特殊包,它用適合該語言的方式公開 GTK+ API。例如,我已經把 Hello World 應用程序轉換成 Python 和 C#。要在這些語言中運行 GTK+,除了 Python 和 Mono/.NET 之外,分別還需要 PyGTK 和 Gtk#(請參閱 參考資料)。PyGTK 中的 Hello World 清單6 顯示了轉換成 Python 的 Hello World 應用程序的代碼。清單6. PyGTK 中的 Hello World 應用程序 import pygtk pygtk.require('2.0') import gtk import random greetings = ["Hello World", "Witaj ?wiecie", "世界に今日は"] def choose_greeting (greets): return greets[random.randint (0, len(greets) - 1)] def cb_clicked(button, label): label.set_text(choose_greeting(greetings)) window = gtk.Window () vbox = gtk.VBox () button = gtk.Button("Hello World") label = gtk.Label (choose_greeting (greetings)) window.add(vbox) vbox.add(label) vbox.pack_start(button, False, False) window.connect("delete-event", lambda a,b: gtk.main_quit()) button.connect("clicked", cb_clicked, label) window.show_all() gtk.main() 由於緊湊的 Python 代碼,應用程序的這個版本比它的 C 語言對應物更短。除此之外,看起來是相似的。注意,代碼被轉換成使用 Python 的習慣,但是 API 保持不變。Gtk# 中的 Hello WorldGtk# 中的 Hello World 應用程序代碼要比 C 版本略長,因為 C# 要求的聲明很長。所以,我沒有在這里包含完整的源代碼。源代碼包含在附加的下載中。下面快速查看一下 C 到 C# 的主要概念轉換: class GtkHello : Gtk.Window { 現在不再創建並設置新窗口,而是把 Gtk.Window 類放進一個子類,並把所有設置代碼移動到構造函數。這種方法並非特定於 Gtk#。實際上,在 C 程序中,當需要窗口的多個拷貝時,經常使用這種方法。但是,在 C# 中使用子類如此之容易,所以即使對一個實例這么做也有意義 —— 特別是在考慮到 C# 要求至少聲明一個類的時候,更是如此。 this.DeleteEvent += new DeleteEventHandler(DeleteCB); button.Clicked += new EventHandler(ButtonClickCB); 可以看到,GTK+ 信號被轉換成地道的 C# 事件概念。名稱也被稍加修改,以更好地符合 C# 的命名規范。清單7. GTK+ 信號被轉換成地道的 C# 事件概念 private void DeleteCB (object o, DeleteEventArgs args) { Application.Quit (); args.RetVal = true; } 由於C# 事件的構造方式,所以 delete-event 處理程序的原型略有不同。它不是從回調返回 true,而是通過 args.RetVal 傳遞返回值。gtk_main() 和gtk_main_quit() 分別被 Application.Run() 和Application.Quit() 代替。回頁首有用的工具在使用 GTK+ 進行開發時,有幾個工具可以讓工作輕鬆些。其中最著名的幾個工具是 Glade、Libglade 和 Devhelp。Glade 和 LibgladeGlade 是一個界面構建器 —— 這個程序可以圖形化地構建應用程序,而不必手動從源代碼開始構建。更重要的是第二個組件:Libglade。顧名思義,Libglade 支持讀取可擴展標記語言(XML)格式,Glade 用 XML 保存用戶界面描述。使用 Libglade,可以直接從這個描述構建應用程序的界面,而不需要任何代碼。圖2 顯示了一個包含幾個部件的簡單的 Libglade 應用程序。圖2. 簡單的 Libglade 應用程序清單8 顯示了圖 2 所示的 Libglade 應用程序的完整源代碼。清單8. Libglade 應用程序的源代碼 #include <gtk/gtk.h> #include <glade/glade.h> int main (int argc, char *argv[]) { GladeXML *ui; gtk_init(&argc, &argv); /* Read user interface description from glade file */ ui = glade_xml_new ("glade_hello.glade", "main_window", NULL); /* Automatically connect signals */ glade_xml_signal_autoconnect(ui); gtk_main(); return 0; } 可以看到,所有的事情只有 17 行代碼,包括注釋和空行。雖然真正的應用程序不會這么短,但是從代碼的清晰性、模塊性和可管理性來說,Libglade 帶來了巨大的提高。如果想進一步研究這個程序是如何構建的,可通過本文附帶的下載中其餘的示例進行了解。DevhelpDevhelp 是一個文檔瀏覽器,是為了閱讀用 gtk-doc 生成的格式的文檔而設計的,gtk-doc 是構建 GTK+ 文檔的標准工具,相關的項目,例如 Pango 和 GNOME 也使用它。使用 Devhelp,可以迅速地搜索函數索引並瀏覽已經安裝的文檔,從而可以更迅速地獲得需要的信息。Devhelp 是一個 GNOME 應用程序。所以,要運行它,需要一個符合 POSIX 的操作系統,在上面運行 GNOME,例如 Linux�0�3 或 Sun Solaris,還需要 GNOME 運行時庫。不需要運行 GNOME 本身。如果使用其他平台,也有許多其他方法可以閱讀 GTK+ 文檔。Mono 項目有 Monodoc 瀏覽器,它通常是與 Gtk# 參考一起預先裝入的。GTK+ 的 Windows 安裝器也通常包含適合各種開發工具的文檔格式,例如 Visual Studio�0�3。最後,總有使用 Web 瀏覽器在線閱讀文檔這個選項,但是推薦採用專用瀏覽器,因為它的速度快,還有針對在程序文檔中進行搜索而設計的額外特性。下期預報在這篇文章中,學習了 GTK+ 編程中使用的基本概念。還看到了如何在 C 語言之外的語言中使用 GTK+,在保持使用 GTK+ 的一般方式的同時,還使用了特定於這些語言的方式。最後,還介紹了有助於更快更好地開發應用程序的工具。在本系列的最後一期中,將進一步觀察 GTK+ 開發的另一個方面:部署。文章將詳細分析各種選項,包括移植性的考慮和安裝的簡易。最後,將以更廣闊的視野來看 GTK+ —— 作為一個有活躍社區的項目,它有助於構建出更好地為用戶服務的應用程序。回頁首下載描述名字大小下載方法Source codeos-gtk2_hello.zip18KBHTTP關於下載方法的信息參考資料 學習您可以參閱本文在 developerWorks 全球站點上的 英文原文。 請閱讀 developerWorks 「GTK+ 基礎」 系列中的全部文章。 GNU Gettext 是一個用於應用程序運行時轉換的庫。 Libglade Reference Manual 是用來動態創建 GTK+ 界面的庫。 請訪問 GTK+ 獲得關於工具包的更多信息。 全面的 GTK+ API Documentation 對於所有開發人員都很重要。 Matthias Warkus 編寫的 The Official GNOME 2 Developer's Guide(No Starch Press,2004 年)介紹了 GNOME 2,包括使用 GTK+ 進行編程。 請訪問 developerWorks 開放源碼專區 獲得豐富的 how-to 信息、工具和項目更新,幫助您用開放源碼技術進行開發並把它們用於 IBM 的產品。 獲得產品和技術 請獲取 Gtk#,這是針對 Microsoft .NET 環境的 GTK+ 綁定。 請獲取 GTK+ 的官方 source code tarballs。 請訪問 PyGTK,這是 Python 的 GTK+ 綁定的官方站點。 Gazpacho 是Glade UI 描述文件的改進的編輯器,是用 PyGTK 編寫的。 Devhelp 是用於 GNOME 的一個面向程序員的文檔瀏覽器。 請參閱 GNOME,這是使用 GTK+ 構建的側重於應用的桌面。 請嘗試 Xfce,這是一個快速而易用的桌面,也是用 GTK+ 開發的。 請訪問 Gnomefiles 並得到超過 1,000 個用 GTK+ 構建的應用程序。 請用IBM 試用軟體 改造您的下一個開放源碼開發項目,這些軟體可以下載也可以通過 DVD 得到。 討論 請在GTK+ mailing lists 上獲得關於用 GTK+ 開發軟體的支持並詢問相關問題。 通過參與 developerWorks blogs 加入developerWorks 社區。 關於作者Maciej Katafiasz 是計算機科學專業的研究生,從高中起就一直使用開放源碼技術。從 GNOME 1.0 起,他就是 GNOME 桌面的用戶,而 2.0 版一發布,他就愛上了它並了解到 GTK+ 能夠開發自己喜歡的桌面。關閉[x]關於報告濫用的幫助報告濫用謝謝! 此內容已經標識給管理員注意。關閉[x]關於報告濫用的幫助報告濫用報告濫用提交失敗。 請稍後重試。關閉[x]developerWorks:登錄IBM ID:需要一個 IBM ID?忘記IBM ID?密碼:忘記密碼?更改您的密碼 保持登錄。單擊提交則表示您同意developerWorks 的條款和條件。 使用條款 當您初次登錄到 developerWorks 時,將會為您創建一份概要信息。您在developerWorks 概要信息中選擇公開的信息將公開顯示給其他人,但您可以隨時修改這些信息的顯示狀態。您的姓名(除非選擇隱藏)和昵稱將和您在 developerWorks 發布的內容一同顯示。所有提交的信息確保安全。關閉[x]請選擇您的昵稱:當您初次登錄到 developerWorks 時,將會為您創建一份概要信息,您需要指定一個昵稱。您的昵稱將和您在 developerWorks 發布的內容顯示在一起。昵稱長度在 3 至 31 個字元之間。 您的昵稱在 developerWorks 社區中必須是唯一的,並且出於隱私保護的原因,不能是您的電子郵件地址。昵稱:(長度在 3 至 31 個字元之間)單擊提交則表示您同意developerWorks 的條款和條件。 使用條款. 所有提交的信息確保安全。為本文評分評論回頁首

Ⅲ c語言中的 _sleep() 函數誰能幫忙介紹下,注意不是sleep,也不是Sleep。編譯會有警告,但沒有錯.

警告 1 warning C4996: '_sleep': This function or variable has been superceded by newer library or operating system functionality. Consider using Sleep instead. See online help for details. c:\users\administrator\documents\visual studio 2012\projects\test001\test001\源.cpp 6
警告1 警告C4996:'_sleep':該函數或變數已經被新的庫或操作系統的功能所取代。考慮使用,而不是睡眠。詳細信息請參見在線幫助。 C:\用戶\管理員\文檔\ Visual Studio 2012中\項目\ test001\ test001\源的.cpp6

就是說最好用新的Sleep(); 來自<windows.h>或<winbase.h>

Ⅳ 關於VC編譯器添加庫函數的問題

做法很多。我的做法是(我已經習慣了):(我的是英文版的VC,對應中文的那個按鈕,請自己翻譯,呵呵)1.將「ccc_time.cpp」和「cc_time.h」拷貝到當前工程目錄下;2.點擊project彈出下拉菜單,再點擊add to project彈出下拉菜單,再點擊Files,彈出文件選擇對話框。3.選擇你要加入的那兩個文件,點擊OK就可以了。和載入鏈接庫的方法相同。這是一種動態載入方法。打包的時候可以一並帶走,很方便。上面的回答是一種靜態載入方法。打包的時候有時候比較麻煩,呵呵。

單片機C語言編程,要使用C語言自帶的庫函數,使用哪個宏包含命令

使用#include調用庫函數。
C51語言的編譯器中包含有豐富的庫函數,使用庫函數可以大大簡化用戶程序設計的工作量,提高編程效率。每個庫函數都在相應的頭文件中給出了函數原型聲明,在使用時,必須在源程序的開始處使用預處理命令#include將有關的頭文件包含進來。
C51庫函數中類型的選擇考慮到了8051單片機的結構特性,用戶在自己的應用程序中應盡可能地使用最小的數據類型,以最大限度地發揮8051單片機的性能,同時可減少應用程序的代碼長度。
單片機c語言編程是基於C語言的單片機編程。單片機的C語言採用C51編譯器(簡稱C51)。由C51產生的目標代碼短,運行速度高,存儲空間小,符合C語言的ANSI標准,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。51單片機支持三種高級語言,即PL/M,C和BASIC。C語言是一種通用的程序設計語言,其代碼率高,數據類型及運算符豐富,並具有良好的程序結構,適用於各種應用的程序設計,是使用較廣的單片機編程語言。

閱讀全文

與編譯睡眠函數庫相關的資料

熱點內容
idea編譯進度條 瀏覽:132
文件夾工具箱軟體 瀏覽:686
最近為什麼手機連不上索尼伺服器 瀏覽:877
海康錄像機怎麼關視頻加密 瀏覽:786
編程以後有可能被機器人代替嗎 瀏覽:522
windows創建文件命令 瀏覽:986
linuxcopy文件內容 瀏覽:383
程序員帥哥禿頂 瀏覽:839
阿里雲伺服器開通流程 瀏覽:105
如何開雲伺服器 瀏覽:979
網站小說源碼 瀏覽:301
php用什麼ide 瀏覽:867
網上預約課程app哪個好 瀏覽:152
android兼容測試工具 瀏覽:96
雲伺服器不支持虛擬化怎麼辦 瀏覽:189
加密方式的演變 瀏覽:364
java常用演算法pdf 瀏覽:734
伺服器數據遇到異常什麼原因 瀏覽:450
phpexif信息 瀏覽:543
單片機三位元組浮點數 瀏覽:757