導航:首頁 > 編程語言 > xlib編程

xlib編程

發布時間:2022-10-02 04:17:53

① callback是什麼意思

回調函數,或簡稱回調(Callback 即call then back 被主函數調用運算後會返回主函數),是指通過參數將函數傳遞到其它代碼的,某一塊可執行代碼的引用。

這一設計允許了底層代碼調用在高層定義的子程序。

回調的用途十分廣泛。例如,假設有一個函數,其功能為讀取配置文件並由文件內容設置對應的選項。

若這些選項由散列值所標記,則讓這個函數接受一個回調會使得程序設計更加靈活:函數的調用者可以使用所希望的散列演算法,該演算法由一個將選項名轉變為散列值的回調函數實現;因此,回調允許函數調用者在運行時調整原始函數的行為。

回調的另一種用途在於處理信號或者類似物。例如一個POSIX程序可能在收到SIGTERM信號時不願立即終止;為了保證一切運行良好,該程序可以將清理函數注冊為SIGTERM信號對應的回調。

回調亦可以用於控制一個函數是否作為:Xlib允許自定義的謂詞用於決定程序是否希望處理特定的事件。

有兩種類型的回調,它們在運行時控制數據流的方式不同:阻塞回調(也稱為同步回調或僅回調)和延遲回調(也稱為非同步回調)。

在函數返回之前調用阻塞回調(在下面的 C 示例中,它說明了阻塞回調,它是函數main),則可以在函數返回後調用延遲回調。延遲回調通常用於 I/O 操作或事件處理的上下文中,並且在多個線程的情況下由中斷或不同的線程調用。

由於其性質,阻塞回調可以在沒有中斷或多線程的情況下工作,這意味著阻塞回調通常不用於同步或將工作委託給另一個線程。

回調用於在窗口系統中對應用程序進行編程。在這種情況下,應用程序提供(引用)一個特定的自定義回調函數供操作系統調用,然後操作系統調用此特定於應用程序的函數以響應滑鼠單擊或按鍵等事件。

這里的一個主要問題是許可權和安全性的管理:雖然該函數是從操作系統調用的,但它不應以與系統相同的許可權運行。這個問題的解決方案是使用保護環。

回調函數在實際中有許多作用。

假設有這樣一種情況:我們要編寫一個庫,它提供了某些排序演算法的實現(如冒泡排序、快速排序、shell排序、shake排序等等),為了能讓庫更加通用,不想在函數中嵌入排序邏輯,而讓使用者來實現相應的邏輯。

回調可用於通知機制。例如,有時要在A程序中設置一個計時器,每到一定時間,A程序會得到相應的通知,但通知機制的實現者對A程序一無所知。

那麼,就需一個具有特定原型的函數指針進行回調,通知A程序事件已經發生。實際上,API使用一個回調函數SetTimer來通知A程序。如果沒有提供回調函數,它還會把一個消息發往程序的消息隊列。

另一個使用回調機制的API函數是EnumWindow,它枚舉屏幕上所有的頂層窗口,每個窗口都可以通過它調用另一個程序提供的函數,並傳遞窗口的處理程序。例如:如果被調用者返回一個值,就繼續進行迭代;否則,退出。

EnumWindow並不關心被調用者在何處,也不關心被調用者用它傳遞的處理程序做了什麼,它只關心返回值,因為基於返回值,它將繼續執行或退出。

C語言的回調函數只能通過函數指針實現,在C++中則可以使用匿名函數(lambda)或仿函數(functor)作為回調函數。

② 為什麼編程那麼難

編程需要人有比較強的邏輯思維能力,編程過程中很多東西都很抽象,這就需要你多花時間去理解了.
C語言基本編程還是很容易的,就是掌握幾個控制語句,控制你的程序每一步該干什麼,實現比較容易,程序大了就要考慮程序內部的數據組織問題,即數據結構.
數據結構可以說是編程的核心,很多演算法都需要有好的數據結構,同時學數據結構具有很大的難度,好多軟體從業人員在這方面也是比較欠缺的,想學好需要花時間去多想這個結構是怎麼鏈接的,同時也要多在電腦上練習.一時學的不如意也不要灰心.
匯編語言就是那些指令不大好記,其實你用多了也就熟悉了.
慢慢來吧!

③ centos系統怎麼安裝qt4.8.4

記錄下在CentOS下安裝qt4.8的過程:
(最好是在英文系統語言環境下安裝,中文可能會出現無法正確中文字體)
1. 安裝必需的環境
安裝gcc和g++:
[root@localhost local]# yum install gcc

[root@localhost local]# yum install gcc-c++

安裝Xlib:[root@localhost local]# yum install libX11-devel libXext-devel libXtst-devel

2. 下載qt
官網下載地址:http://qt-project.org/downloads。
CentOS安裝選擇
Qt libraries 4.8.5 for linux/X11 (230 MB) (Info) 3. 將下載的qt進行解壓
[root@localhost local]# tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz

4. 進行配置
[root@localhost local]# ./configure --prefix=/usr/local

我選擇安裝在/usr/local下,最後配置環境的時候要記得更換成自己安裝的目錄。
5. 編譯、運行
這步可能會花費比較長的時間,需要耐心等大
[root@localhost local]# gmake

[root@localhost local]# gmake install

6. 安裝成功,配置環境變數
將安裝路徑寫到環境變數中
[root@localhost local]# vim /etc/profile

加入以下內容:
#ADD QT4.8.5 PATH
PATH=/usr/local/bin:$PATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTTRC

使配置生效
[root@localhost bin]# source /etc/profile

7. 配置成功!打開qt界面進行編程吧!
進入qt安裝目錄/bin文件夾下,執行

④ 誰有xlib編程開發的中文電子文檔

//XButton.c

#include
#include
main()
{
Display *d;
Window w, wb;
XEvent event;
Font f;
GC gc;
d = XOpenDisplay( NULL );
w = XCreateSimpleWindow( d, RootWindow( d, 0 ),
180, 50,
260, 160,
1, WhitePixel(d, 0), BlackPixel(d, 0) );
XSelectInput( d, w, ExposureMask|ButtonPressMask );

wb = XCreateSimpleWindow( d, w,
20, 20,
100, 20,
1, WhitePixel(d, 0), BlackPixel(d, 0) );

XSelectInput( d, wb, ExposureMask|ButtonPressMask );

gc = XCreateGC( d, w, 0, 0 );
f = XLoadFont( d, "fixed" );
XSetFont( d, gc, f );
XMapWindow( d, w );
XMapWindow( d, wb );
XFlush( d );

while( 1 ){
XNextEvent( d, &event );
switch( event.type ){

case Expose:
if ( event.xany.window == wb ){
XSetForeground( d, gc, BlackPixel(d, 0) );
XFillRectangle( d, w, gc, 0, 0, 260, 160 );
XSetForeground( d, gc, WhitePixel(d, 0) );
XDrawString( d, wb, gc, 10, 10, "push", 4 );//把push換成中文例如」確 //定」?????為什麼編譯完後,執行,不能出現中文
}
break;

case ButtonPress:
if ( event.xany.window == w ){
printf( "w " );
fflush( stdout );
}
if ( event.xany.window == wb ){
printf( "wb ");
fflush( stdout );
}
break;
}
}
}

⑤ linux 下怎麼畫圖

你要在你編寫程序中實現畫圖功能的話,在linux下一般是基於xlib和opengl的,窗口化部分則是交給qt或gtk

嫌麻煩的話,可以用glut,這個是基於opengl的功能包,功能較簡單,適合拿來玩熟原理

⑥ Qt是什麼學習嵌入式會學到這個嗎

QT是應用開發,如果要搞嵌入式上層開發,本身跟java,ios沒什麼區別,注重特效,注重應用界面,不建議搞,

閱讀全文

與xlib編程相關的資料

熱點內容
膨脹加強帶梁箍筋要不要加密 瀏覽:667
排序演算法大全及時間復雜度 瀏覽:341
壓縮文件時報錯 瀏覽:611
圖的演算法有什麼用 瀏覽:793
櫃式空調壓縮機在哪裡 瀏覽:724
創建多級文件夾視頻講解 瀏覽:195
計算機有很多空文件夾能刪嗎 瀏覽:486
android44w下載 瀏覽:248
測排卵app哪個好用 瀏覽:622
平時解壓方法圖解 瀏覽:56
php多長時間能學會 瀏覽:308
apex伺服器選什麼好 瀏覽:595
nds編譯 瀏覽:110
各個擊破法動態規劃法貪婪演算法 瀏覽:533
柱端部為什麼要加密 瀏覽:891
c單鏈表排序演算法 瀏覽:362
python鄰接鏈表 瀏覽:369
外國解壓的視頻說話助眠 瀏覽:115
查看php擴展版本 瀏覽:239
社保卡加密機放在信息中心 瀏覽:95