色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 從Hello World 程序開始

從Hello World 程序開始 時間:2018-09-29      來源:未知

從Hello World 程序開始

歡迎來到ncurses 的世界。在我們踏上學習ncurses 的路途之前,讓我們先寫一個小程序,來了解一下應用ncurses 庫所編寫程序的結構。

編譯包含NCURSES 庫函數的程序

如果要調用ncurses 庫中的函數,你必須在代碼中加載ncurses.h 文件,就是要在C 或C++

程序開頭添加“#include <ncurses.h>”,然后在鏈接時標記-lncurses參數。如果ncurses 庫不存在,可以按以下方法安裝:

sudo apt-get install  libncurses5-dev

例1:Hello World !!!程序

#include <ncurses.h>

int main()

{

    initscr(); /* 初始化,進入NCURSES 模式*/

    printw("Hello world!!!"); /* 在虛擬屏幕上打印Hello, World!!! */

    refresh();/* 將虛擬屏幕上的內容寫到顯示器上,并刷新*/

    getch();/* 等待用戶輸入*/

    endwin();/* 退出NCURSES 模式*/

    return 0;

}

編譯:gcc -o helloword helloword.c -lncurses

運行:./helloword 

示例剖析

這個程序在顯示器屏幕上打印“Hello World !!!”后等待用戶按任意鍵退出。這個小程序展示了如何初始化并進入curses 模式、處理屏幕和退出curses 模式。讓我們逐行的分析這個小程序:

關于initscr() 函數

initscr()函數將終端屏幕初始化為curses 模式。它用來清除屏幕上所有的字符,并等待下一部處理。所以在調用其它的curses 函數前,要先調用initscr()函數初始化屏幕。這個函數初始化了curses 系統并且為當前屏幕(也就是“stdscr”)和相關的數據結構分配內存。

在以前的計算機上曾經出現過一個極端的例子:因為系統中的可用內存太小,以至于initscr()函數無法分配足夠的內存給相關的數據結構,從而導致curses 系統初始化失敗。在以后的章節中我們將介紹如何定制屏幕的初始化模式。

神秘的refresh() 函數

第二行的printw()函數用于把字符串“Hello,World!!!”輸出到虛擬的屏幕上。這個函數在用法上和printf()函數很像。不同的是:printw()函數把字符串輸出到“stdscr”的虛擬窗口坐標(0,0)上(從顯示的結果來看,坐標(0,0)在屏幕的左上角上)。

現在該說說這個神秘的refresh()函數了。在我們使用printw 函數打印“Hello World!!!”時,實際上這個消息打印到了一個叫作“stdscr”的虛擬窗口上,沒有被直接輸出到屏幕上。printw()函數的作用是不斷將一些顯示標記和相關的數據結構寫在虛擬顯示器上,并將這些數據寫入stdscr 的緩沖區內。為了顯示這些緩沖區中的數據我們必須使用refresh()函數告訴curses系統將緩沖區的內容輸出到屏幕上。

通過這種機制程序員能夠不斷在虛擬屏幕上寫數據。然后調用refresh()函數讓輸出的操作看起來是一次完成的。因為refresh()函數只核查窗口和數據中變動的部分,這種富有彈性的設計提供了一個高效的反饋機制。但是這有時很打擊初學者的積極性。因為對于初學者來說忘記在輸出后調用refresh()函數是很惱人的錯誤。不過不用擔心,很多人都會犯這樣的錯誤。

 關于endwin()函數

后,別忘了退出curses 模式。否則,在程序結束后你的終端可能會運轉得不正常。endwin()函數釋放了curses 子系統和相關數據結構占用的內存,使你能夠正常返回控制臺模式。這個函數必須是在你完成所有的curses 操作以后才可以調用。(譯者注:如果你在endwin()函數后再調用其它的curses 的函數。很顯然,那些語句不會執行。)說到這里,順便提醒一下。如果你的程序不能正常地顯示東西了。請務必看看initscr()函數和endwin()函數是不是在不該被調用的地方調用了。

上一篇:linux線程私有數據

下一篇:MQTT開源軟件之EMQ安裝篇

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 国产精品无码久久久久成人影院 | 免费两性的视频网站 | 少妇做爰α片免费视频网站 | 国产各种高潮合集在线观看 | 下属新婚人妻紧窄 | 国产一卡三卡四卡无卡精品 | 午夜精品久久久久久久99热额 | 性一交一乱一美A片69XX | 久久久久亚洲精品无码网址色欲 | 中文天堂最新版在线网 | 国产真实乱对白精彩久久 | 久久久精品人妻一区二区三区蜜桃 | 起碰免费公开97在线视频 | 日本高清免费情在线视频免费下个 | 国产精品久久久久久久影院 | 国产初高中生在线视频 | 日本成人在线播放 | 国产精品国产三级欧美二区 | 开妇小嫩苞调教HHH嗯啊MTV | 亚洲国产三级在线观看 | 国产成人精品a∨一区二区 少妇BBWBBW高潮 | 在线观看第一页 | 日韩精品在线视频播放 | 麻豆观看 | 四虎影院在线免费观看 | 欧洲精品99毛片免费高清观看 | 亚洲熟女乱综合一区二区 | 亚洲韩国日本在线观看p | AV不卡秒播在线观看 | 久久日韩精品无码一区 | 玩弄放荡人妻少妇系列 | 熟妇人妻va精品中文字幕 | 无码午夜福利片在线观看 | 久久久久人妻一区精品性色AV | 亚洲精品国产高清在线观看 | 国产成人无码一区二区在线观看 | 国产精品毛片久久久久久久 | 地下室极端性调教 | 国产成人精品一区二区视频 | 色综合天天综合网国产成人网 | 国产超碰97人人做人人爱 |