亚洲精品一二区_国产黄色片网站_99久久久成人国产精品_蜜臀网_国产精品一区二区三区免费_成人av中文字幕_91精品国产欧美一区二区成人

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 從Hello World 程序開始

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

從Hello World 程序開始

歡迎來到ncurses 的世界。在我們踏上學(xué)習(xí)ncurses 的路途之前,讓我們先寫一個(gè)小程序,來了解一下應(yīng)用ncurses 庫(kù)所編寫程序的結(jié)構(gòu)。

編譯包含NCURSES 庫(kù)函數(shù)的程序

如果要調(diào)用ncurses 庫(kù)中的函數(shù),你必須在代碼中加載ncurses.h 文件,就是要在C 或C++

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

sudo apt-get install  libncurses5-dev

例1:Hello World !!!程序

#include <ncurses.h>

int main()

{

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

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

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

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

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

    return 0;

}

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

運(yùn)行:./helloword 

示例剖析

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

關(guān)于initscr() 函數(shù)

initscr()函數(shù)將終端屏幕初始化為curses 模式。它用來清除屏幕上所有的字符,并等待下一部處理。所以在調(diào)用其它的curses 函數(shù)前,要先調(diào)用initscr()函數(shù)初始化屏幕。這個(gè)函數(shù)初始化了curses 系統(tǒng)并且為當(dāng)前屏幕(也就是“stdscr”)和相關(guān)的數(shù)據(jù)結(jié)構(gòu)分配內(nèi)存。

在以前的計(jì)算機(jī)上曾經(jīng)出現(xiàn)過一個(gè)極端的例子:因?yàn)橄到y(tǒng)中的可用內(nèi)存太小,以至于initscr()函數(shù)無(wú)法分配足夠的內(nèi)存給相關(guān)的數(shù)據(jù)結(jié)構(gòu),從而導(dǎo)致curses 系統(tǒng)初始化失敗。在以后的章節(jié)中我們將介紹如何定制屏幕的初始化模式。

神秘的refresh() 函數(shù)

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

現(xiàn)在該說說這個(gè)神秘的refresh()函數(shù)了。在我們使用printw 函數(shù)打印“Hello World!!!”時(shí),實(shí)際上這個(gè)消息打印到了一個(gè)叫作“stdscr”的虛擬窗口上,沒有被直接輸出到屏幕上。printw()函數(shù)的作用是不斷將一些顯示標(biāo)記和相關(guān)的數(shù)據(jù)結(jié)構(gòu)寫在虛擬顯示器上,并將這些數(shù)據(jù)寫入stdscr 的緩沖區(qū)內(nèi)。為了顯示這些緩沖區(qū)中的數(shù)據(jù)我們必須使用refresh()函數(shù)告訴curses系統(tǒng)將緩沖區(qū)的內(nèi)容輸出到屏幕上。

通過這種機(jī)制程序員能夠不斷在虛擬屏幕上寫數(shù)據(jù)。然后調(diào)用refresh()函數(shù)讓輸出的操作看起來是一次完成的。因?yàn)閞efresh()函數(shù)只核查窗口和數(shù)據(jù)中變動(dòng)的部分,這種富有彈性的設(shè)計(jì)提供了一個(gè)高效的反饋機(jī)制。但是這有時(shí)很打擊初學(xué)者的積極性。因?yàn)閷?duì)于初學(xué)者來說忘記在輸出后調(diào)用refresh()函數(shù)是很惱人的錯(cuò)誤。不過不用擔(dān)心,很多人都會(huì)犯這樣的錯(cuò)誤。

 關(guān)于endwin()函數(shù)

后,別忘了退出curses 模式。否則,在程序結(jié)束后你的終端可能會(huì)運(yùn)轉(zhuǎn)得不正常。endwin()函數(shù)釋放了curses 子系統(tǒng)和相關(guān)數(shù)據(jù)結(jié)構(gòu)占用的內(nèi)存,使你能夠正常返回控制臺(tái)模式。這個(gè)函數(shù)必須是在你完成所有的curses 操作以后才可以調(diào)用。(譯者注:如果你在endwin()函數(shù)后再調(diào)用其它的curses 的函數(shù)。很顯然,那些語(yǔ)句不會(huì)執(zhí)行。)說到這里,順便提醒一下。如果你的程序不能正常地顯示東西了。請(qǐng)務(wù)必看看initscr()函數(shù)和endwin()函數(shù)是不是在不該被調(diào)用的地方調(diào)用了。

上一篇:linux線程私有數(shù)據(jù)

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

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 日日摸夜夜摸狠狠摸97 | 毛片免| 国产成人精品永久免费视频 | 精品无人区一区二区三区 | 国产孕妇交bbwxxxxx | 久久机热综合久久国产 | 天天色天天草 | 久草福利资源在线观看 | 狠狠色噜噜狠狠狠狠米奇7777 | 在线亚洲天堂 | 人人澡人人模人人爽手机版 | 啪啪国产 | 国产资源在线免费观看 | 国产精品入口麻豆午夜 | 99亚洲精品| 人人夜| 久草资源网站 | 一本一本久久a久久综合精品蜜桃 | 中文字幕在线看片成人 | 久草视频福利 | 亚洲精品人成网在线播放影院 | 欧美成人性视频播放 | jizz免费观看 | 国产精品亚洲天堂 | 日本激情视频网站w | 韩国伦理视频在线观看 | 99热2| 欧美日韩99 | 国产欧美二区 | 欧美papa | 米奇精品一区二区三区 | 奇米色777欧美一区二区 | 黄色免费在线网址 | 久久国产精品2020盗摄 | 人人爽人人爽人人爽 | 午夜香蕉成视频人网站高清版 | 国产福利二区 | 欧美日韩一区二区在线视频播放 | 韩国三级中文字幕hd在线 | 日韩一区二区超清视频 | 欧美片网站免费 |