色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號

回到頂部

主站蜘蛛池模板: 高清精品一区二区三区 | 这题超纲了动漫免费观看 | 一个人看的www视频免费观看 | 又粗又大又黄又硬又爽免费看 | 扒开粉嫩小泬直接进视频 | 久久午夜无码鲁丝片午夜精品 | 抓住我的双乳咬我奶头视频看 | 日本少妇寂寞少妇aaa | 国产成人啪精品视频免费视频 | 中文无遮挡h肉视频在线观看 | 手机看片久久久 | 日本高清免费在线观看 | 人妻少妇看A偷人无码精品 国产精品青草久久久久婷婷 | 国产未成女一区二区 | 少妇无内裤下蹲露大唇 | 欧美极品kennajames喷水 | 成在线人av免费无码高潮喷水 | 伊人久麻豆社区 | 久久久久久久极品内射 | 男女无遮挡XX00动态图120秒 | 婷婷丁香五月亚洲中文字幕 | 午夜福利大片免费看网址 | 激情人妻绿帽王八系列 | 国产小屁孩cao大人 久久99国产综合精品免费 | 水多多凹凸福利视频导航 | 欧美兽交一区二区三区影院 | 欧美《熟妇的荡欲》在线观看 | 精品无码久久久久久久久 | 久久久久蜜桃精品成人片 | 97豆奶视频国产 | 无码中文字幕人妻在线一区 | 日韩一卡二卡三卡四卡免费观在线 | 中文字幕视频在线看 | 中文AV无码人妻一区二区三区 | 绝美人妻被夫前侵犯 | AAA女人18毛片水真多 | 亚洲一线产区二线产区精华 | 亚洲国产区男人本色 | 亚洲精品无码不卡久久久久 | 涂了春药被一群人伦爽99势 | 男女啪啪高清无遮挡免费 |