• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 46  文章 - 39  trackbacks - 0
            <2012年3月>
            26272829123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(2)

            隨筆分類

            隨筆檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            例子:

            環(huán)境:linux
            編譯器:gcc
            源碼:hello.c

            1 #include <stdio.h>
            2 
            3 int main()
            4 {
            5       printf("hello, world\n");
            6 }


            :~$ gcc -o hello hello.c

            1、 源碼文件hello.c           通過預(yù)處理器->修改過的源碼文件hello.i
            2、                     hello.i   通過編譯器->匯編代碼hello.s
            3、                    hello.s   通過匯編器->浮動文件hello.o
            4、        hello.o+printf.o   通過連接器->可執(zhí)行文件hello。



            1、預(yù)處理階段    預(yù)處理器(cpp)根據(jù)#后面的指令修改源代碼。例:hello.c中的#include <stdio.h> 命令告訴預(yù)處理器把系統(tǒng)頭文件stdio.h插入到程序中生產(chǎn)另外一個C程序,一般后綴名為.i。

            2、編譯階段       編譯器(cc1)把hello.i文件轉(zhuǎn)化成匯編代碼hello.s文件。

            3、匯編階段       匯編器(as)把hello.s轉(zhuǎn)化成機(jī)器語言指令浮動文件程序hello.o。

            4、連接階段       hello程序調(diào)用了標(biāo)準(zhǔn)C庫printf函數(shù)。連接器(ld)把printf.o和hello.o連接成hello可執(zhí)行文件。
            posted @ 2012-05-24 14:10 canaan 閱讀(2344) | 評論 (2)編輯 收藏
            本書的目標(biāo)讀者是那些希望自己變得更有效、更多產(chǎn)的程序員。或許你在因為不能實現(xiàn)自己的潛力而沮喪。或許你看到你的同事使用來使它們比你更多產(chǎn)。也許你當(dāng)前的工作使用比較老的技術(shù),你想知道怎樣把教新的思想應(yīng)用于你的工作。

            我們不會假裝擁有所有(或大部分)的答案,我們的觀念也不會適用于所有的情況。我們所能說的只是,如果你遵循我們的方法,你將會快速的獲得經(jīng)驗,你的生產(chǎn)力將會提高,會對整個開發(fā)過程更加理解。你將能編寫更好的軟件。
            posted @ 2012-04-17 12:40 canaan 閱讀(1799) | 評論 (0)編輯 收藏
            序言

            本書將會幫助你成為一個更好的程序員

            不管你是個人開發(fā)者,還是大項目團(tuán)隊中的一員,或者是同時為很多客戶共事的顧問。本書將會幫助你,作為一個人體,更好地完成工作。本書不是理論書籍--我們專注于實際問題,利用你的經(jīng)驗作出更有見識的決定。pragmatic詞來自拉丁語的pragmaticus--“商業(yè)技巧”--后者又源于希臘(...),意思是“去做。”這是一本關(guān)于“去做(doing)”的書。

            編程是一門手藝。用最簡單的話來說就是讓計算機(jī)做你(或者用戶)想讓它做的事情。作為一個程序員,你既是聆聽者,又是顧問,既是翻譯員,又是專制者。你嘗試著捕捉這些難以捉摸的需求,用一種方法來描述它們,讓一臺純粹的機(jī)器能夠合理的處理它們。你嘗試著記錄你的工作,以使他人能夠理解它;你還嘗試著策劃你的工作,以使他人能夠在上面構(gòu)建。另外,你嘗試著在項目時鐘的冷酷地催逼下完成這些工作。你每天都在創(chuàng)造小奇跡。

            這是一個困難的工作

            很多人聲稱要給你提供幫助。工具供應(yīng)商吹捧他們的產(chǎn)品所展現(xiàn)出來的奇跡。方法學(xué)大師承諾他們的技術(shù)保證有效。每個人都聲稱他們的編程語言是最好的,而每個操作系統(tǒng)都是這些問題的可信賴的解答。

            當(dāng)然,這些都不是真的。沒有這么簡單的答案。不存最好的解決方案,無論是工具,語言,或者一個操作系統(tǒng)。而存在的只是在某些特定的環(huán)境下更為合適的系統(tǒng)。

            這就是務(wù)實的開始。你不應(yīng)該局限于任何特定的技術(shù),而是應(yīng)該擁有足夠?qū)拸V的背景和經(jīng)驗基礎(chǔ)來為特定的情況選擇一種好的解決方案。你的背景源自于對計算機(jī)科學(xué)基本原則的理解,你的經(jīng)驗來自于廣泛的實際項目。理論與實踐的結(jié)合使你變得強(qiáng)大。

            你調(diào)整方法來適應(yīng)當(dāng)前的情形與環(huán)境。你判斷這些所有因素中相對重要的因素來影響項目,使用你的經(jīng)驗來制作適合的解決方案。你隨著工作的進(jìn)展持續(xù)著這些活動。務(wù)實的程序員不僅要完成工作,而且要做的漂亮
            posted @ 2012-04-17 12:01 canaan 閱讀(1724) | 評論 (0)編輯 收藏
            《The Pragmatic Programmer》 From Journeyman to Master
            《務(wù)實的程序員》 從工人到大師

            或《程序員修煉之道》 從小工到專家

            作者:   【美】 Andrew Hunt   David Thomas
            出版社:  Addison Wesley

            第一版 1999年10月13日

            務(wù)實的程序員通過現(xiàn)代軟件開發(fā)中日益增長的的規(guī)范和技術(shù)細(xì)節(jié)來檢查核心過程--根據(jù)需求來創(chuàng)建用戶可工作和樂于維護(hù)的代碼。本書包含了個人責(zé)任到職業(yè)發(fā)展到用架構(gòu)技術(shù)來保持你的代碼靈活,易于修改和重用。閱讀本書,你將會學(xué)到

            為軟件變質(zhì)做斗爭;

            避免重復(fù)知識陷阱;

            編寫靈活,動態(tài),和易適應(yīng)的代碼;

            避免靠巧合編程;

            用合約,斷言,和異常來保護(hù)你的代碼;

            捕捉真實的需求;

            嚴(yán)格并且有效地進(jìn)行測試;

            讓你的用戶開心;

            組建務(wù)實程序員團(tuán)隊;和

            用自動化使開發(fā)過程更精確。


            本書由一系列獨立的章節(jié)組成,其間充滿了有趣的軼事,周到的例子,和有趣的模擬,《務(wù)實的程序員》描述了軟件開發(fā)的許多不同方面的最佳實踐和主要問題。不管你是新手,還是有經(jīng)驗的程序員,或者是對軟件項目有責(zé)任的經(jīng)理,通過每日學(xué)習(xí)這些課程,都將會在個人生產(chǎn)力,準(zhǔn)確性和工作滿意度快速提升。你將會學(xué)到技能和開發(fā)習(xí)慣和態(tài)度為你的職業(yè)生涯中取得長期成功奠定基礎(chǔ)。你將會成為一個務(wù)實的程序員。

             
            posted @ 2012-04-17 10:26 canaan 閱讀(1785) | 評論 (0)編輯 收藏
            CColorDialog Class 顏色對話框類

            VS2008

            允許你將顏色選擇對話框加入到你的應(yīng)用程序中。


            class CColorDialog : public CCommonDialog


            備注

            CColorDialog對象是一個具有一列定義在顯示系統(tǒng)中的顏色的對話框。用戶可以從列中選擇或者創(chuàng)建特定的顏色,在對話框退出時報告返回給應(yīng)用程序。

            使用提供的構(gòu)造函數(shù)或派生一個新類然后使用你自己的構(gòu)造函數(shù),來構(gòu)建一個CColorDialog對象。

            一旦對話框創(chuàng)建完成,你可以設(shè)置或修改m_cc結(jié)構(gòu)中的任何值來初始化對話框控件的值。該m_cc結(jié)構(gòu)類型是CHOOSECOLOR. 。

            初始化對話框控件后,調(diào)用DoModal成員函數(shù)來顯示對話框,并允許用戶選擇一種顏色。DoModal返回用戶的選擇對話框的OK(IDOK)或者Cancel(IDCANCEL)按鈕。

            如果DoModal返回IDOK,你可以使用CColorDialog方法來找回由用戶輸入的信息。

            你可以使用Windows CommDlgExtendedError函數(shù)來決定不管錯誤發(fā)生在對話框初始化過程中并了解更多有關(guān)的錯誤。

            CColorDialog依賴COMMDLG.DLL文件映射Windows版本3.1更高版本。

            從CColorDialog派生一個類,自定義對話框。提供自定義對話框模板,并添加消息映射來處理從擴(kuò)展控件來的通知消息。任何未處理的消息應(yīng)該傳遞給基類。

            筆記:
            如果你使用框架使其他對話框?qū)ο笞兂苫疑谀承?span style="color: #00ff00;">CColorDialog安裝對象將不顯示一個灰色背景。

            使用CColorDialog需要更多的信息,參見Common Dialog Classes

            需求
            頭文件:afxdlgs.h

            只能設(shè)備開發(fā)筆記

            這個類只支持Windows CE標(biāo)準(zhǔn)SDK。它不支持Windows Mobile Pocket PC或者智能手機(jī)平臺。智能設(shè)備版本CColorDialog類不支持下面方法:
            CColorDialog::SetCurrentColor


            參見
            概念
            posted @ 2012-04-05 19:17 canaan 閱讀(2796) | 評論 (0)編輯 收藏
            隨機(jī)訪問容器

            容器
            類目:容器

            描述
            隨機(jī)訪問容器是一個迭代器類型為隨機(jī)訪問迭代器的可逆容器。它提供常量緩沖時間來訪問隨機(jī)元素。

            改善自

            可逆容器

            相關(guān)類型

            除了定義在可逆容器中的類型,沒有其他額外類型。盡管這個迭代器類型的需求加強(qiáng)了:必須是隨機(jī)訪問迭代器。

            標(biāo)記法

            X 隨機(jī)訪問容器模型類型
            a,b X類型對象
            T X類型的值

            定義

            有效表達(dá)式

            除了定義在可逆容器中的表達(dá)式外,下面的表達(dá)式也必須有效。
            名稱                         表達(dá)式    類型需求                                返回類型
            Element access(訪問元素)   a[n]      n可以轉(zhuǎn)換成size_type                    如果可變,那么是引用,否則為常量引用

            表達(dá)式語義

            一個表達(dá)式的語義只在這個情況下定義,當(dāng)他在可逆容器中沒有定義,或者有額外的信息。
            名稱                         表達(dá)式  前提              語義                   后置
            Element access(訪問元素)     a[n]    0<=n<a.size()     返回容器的第n個元素

            復(fù)雜度保證

            訪問元素的運(yùn)行時復(fù)雜度為緩沖常量時間。

            不變量

            Element access(訪問元素) a[n]返回的元素與增加a.begin()n次得到的結(jié)果迭代器解引用是一樣的。

            模型

            vector
            deque

            注釋

            參見

            Iterator overview,隨機(jī)訪問迭代器,Sequence
            posted @ 2012-03-31 13:52 canaan 閱讀(1843) | 評論 (0)編輯 收藏
                 摘要: 如何設(shè)置MFC狀態(tài)欄?如何在狀態(tài)欄添加圖片?怎樣修改狀態(tài)欄字體顏色?狀態(tài)欄編程,如何使用狀態(tài)欄?  閱讀全文
            posted @ 2012-03-30 22:43 canaan 閱讀(4491) | 評論 (0)編輯 收藏

            CBitmapButton 類


            創(chuàng)建位圖圖像替代文本標(biāo)記的按鈕控件。


            Class CBitmapButton : public CButton


            備注


            CBitmapButton 對象包含多達(dá)四個位圖,為按鈕的不同狀態(tài)包含圖像:up(or normal),down(or selected),focused,和disabled
            。只有第一個位圖是必須的;其他都是可以選擇的。

            位圖按鈕(Bitmap-button)圖像包括圖像的邊框以及圖像本身。邊框通常扮演部分顯示按鈕的狀態(tài)。例如,focused狀態(tài)下的位圖通

            常和up狀態(tài)下的一樣,但是它的邊框是矩形虛線或者粗實線。disabled狀態(tài)下的位圖通常類似于up狀態(tài)但是對比度較低(如暗灰色

            或者灰色菜單選擇)。

            這些位圖可以是任意大小,但是對于up狀態(tài)它們都被視為同樣大小。

            各種應(yīng)用要求位圖圖像的不同組合:

            Up Down Focused Disabled 應(yīng)用
            *                                     位圖
            *   *                                沒有WS_TABSTOP樣式的按鈕
            *   *        *           *          帶有所有狀態(tài)的對話框按鈕
            *   *        *                      帶有WS_TABSTOP樣式的對話框按鈕

            當(dāng)創(chuàng)建一個位圖按鈕控件,設(shè)置BS_OWNERDRAW樣式指定按鈕為自己繪制的。這使Windows為按鈕發(fā)送WM_MEASUREITEMWMDRAWITEM

            消息。框架為你處理這些消息和管理按鈕的外觀。

             

            在windows客戶區(qū)域創(chuàng)建位圖按鈕控件
               1、為按鈕創(chuàng)建一到四個位圖。
               2、構(gòu)建CBitmapButton對象。
               3、調(diào)用Create函數(shù)創(chuàng)建按鈕控件,然后附加到CBitmapButton對象上。
               4、當(dāng)位圖按鈕構(gòu)造好后,調(diào)用LoadBitmaps成員函數(shù)來加載位圖資源。

            一個對話框中包括一個位圖按鈕
               1、為按鈕創(chuàng)建一到四個位圖。
               2、創(chuàng)建一個帶有自繪(owner-draw)按鈕的對話框模板,按鈕放置在你想要的位圖按鈕的地方。
               3、設(shè)置按鈕的caption為"MYIMAGE",按鈕定義符號為IDC_MYIMAGE
               4、在你應(yīng)用程序的資源腳本中,在步驟3中為每個為按鈕創(chuàng)建的圖形設(shè)置標(biāo)題為ID加一個字母,"U","D","F",或者"X"(對應(yīng)于up,down,focused,和disabled)的字符串。例如,像標(biāo)題為"MYIMAGE"的按鈕,它們的ID為"MYIMAGEU","MYIMAGED","MYIMAGEF",和"MYIMAGEX."你必須指定位圖的ID要有雙引號。否則資源編譯器將制定一個整數(shù)的資源,那么MFC在加載圖片時就會失敗。
               5、在你的應(yīng)用程序的對話框類(繼承自CDialog)中,增加一個CBitmapButton成員對象。
               6、在CDialog對象的OnInitDialog例程中,調(diào)用CBitmapButton對象的AutoLoad函數(shù),按鈕控件的ID和CDialog對象的指針作為參數(shù)。

            如果你想處理窗口信息,像BN_CLICKED,位圖按鈕控件發(fā)送給它的父(通常是一個從CDialog派生的類),為CDialog派生對象增加一個消息映射入口,和每個消息處理成員函數(shù)。CBitmapButton對象發(fā)送的通知跟CButton是一樣的。

            類CToolBar對位圖按鈕采用不同的方法。

            更多關(guān)于CBitmapButton的信息,參考Controls。

            要求

            頭文件:afxext.h

            參考

            CTLRLTEST sample:Implements Custom Controls
            CBitmapButton Members
            CButton Class
            Hierarchy Chart


            原文:

            http://msdn.microsoft.com/zh-cn/library/a3y45xs0(v=vs.90).aspx
             

            posted @ 2012-03-22 10:36 canaan 閱讀(1831) | 評論 (0)編輯 收藏
            可逆容器(Reversible Container)

            類目:容器


            描述

            可逆容器是一個有雙向迭代器的前向容器。它可以向后向后迭代通過容器。

            改善自

            Forward Container

            相關(guān)類型

            介紹了兩個新的類型。此外,迭代器類型和常量迭代器類型必須滿足比前向容器(Forward Container)更嚴(yán)格的要求。迭代器類型和反向迭代器類型必須是雙向迭代器(Bidirectional Iterators),而不僅僅是前向迭代器(ForWard Iterators)。

            反向迭代器類型(Reverse iterator type)            X::reverse_iterator    一個反向迭代器適配器的基迭代器類型是容器的迭代器類型。遞增反向迭代器(rever_iterator)類型對象向后移動通過容器:Reverse Iterator適配器映射了++操作符和--操作符。
            常量反向迭代器類型(Const reverse iterator type)  X::const_reverse_iterator  一個反向迭代器適配器的基迭代器是容器的常量迭代器類型。[1]

            標(biāo)記法

            X    反向容器模式類型
            a,b  類型X對象

            定義

            有效表達(dá)式

            除了前向容器(Forward Container)中的表達(dá)式外,下面的表達(dá)式也必須有效
            名稱                      表達(dá)式     類型要求   返回類型
            范圍起始Beginning of range a.rbegin()           如果a是可變的,那么是reverse_iterator,否則為const_reverse_iterator[1]
            范圍結(jié)束End of range       a.rend()             如果a是可變的,那么是reverse_iterator,否則為const_reverse_iterator[1]

            表達(dá)式語義

            一個表達(dá)式的語義只有在這種情況下定義,當(dāng)它沒有在前向容器(Forward Container)中定義,或者有額外的信息。
            名稱                      表達(dá)式 前提     語義                                后置
            逆向范圍起始Beginning of range a.rbegin()    相當(dāng)于X::reverse_iterator(a.end())。 a.rbegin()是提領(lǐng)或者是past-the-end。當(dāng)a.size() == 0是,它為past-the-end。
            逆向范圍結(jié)束End of reverse range a.rend()    相當(dāng)于X::reverse_iterator(a.begin())。 a.rend()是past-the-end。

            復(fù)雜性保證

            rbegin()和rend()運(yùn)行時復(fù)雜性是攤銷時間為常數(shù)。

            不變因素

            有效范圍          [a.rbegin(), a.rend())是一個有效范圍。
            等待范圍          a.begin()到a.end()之間的距離和a.rbegin()到a.rend()之間的距離是一樣的。

            模型

            vector
            list
            deque

            注釋

            [1]一個容器的迭代器類型和常量迭代器類型有可能是相同的類型:一個容器不需要提供可變的迭代器。因此反向迭代器類型和常量反向迭代器類型也可能是相同的。

            參見

            Iterator overview, Bidirectional Iterator, Sequence

                       
            posted @ 2012-03-21 16:07 canaan 閱讀(1474) | 評論 (1)編輯 收藏
            前向容器(Forward Container)

            容器
            類目:容器

            描述

            前向容器中的元素是按一定的順序排序的:這個順序不會因為迭代而自動改變。一定的順序要求允許定義相等的元素(如果容器中的元素是可以比較相等的Equality Comparable)和字典序(如果容器中的元素類型是可以比較小于的 LessThen Comparable)。

            前向容器中的迭代器滿足前向迭代器的要求:因此,前向容器支持多通道算法,并允許同一個容器可以同時擁有多個激活的迭代器。

            完善(Refinement of)

            Container,EqualityComparable,LessThanComparable

            相關(guān)類型

            除了容器總定義的,沒有其他額外的類型。然而,迭代器類型的要求加強(qiáng):迭代器類型必須是前向迭代器模式。

            標(biāo)記法

            X 是一個前向容器模式的類型
            a,b 類型X的對象
            T 類型X的值

            定義

            有效表達(dá)式

            除了容器中定義的表達(dá)式外,EqualityComparable,和LessThanComparable,下面的表達(dá)式必須是有效的。
            名字                        表達(dá)式        類型要求                返回類型
            等式(Equality)              a == b        T是EqualityComparable   可轉(zhuǎn)換成bool
            不等式(Inequality)          a != b        T是EqualityComparable   可轉(zhuǎn)換成bool
            小于(Less)                  a < b         T是LessThanComparable   可轉(zhuǎn)換成bool
            大于(Greater)               a > b         T是LessThanComparable   可轉(zhuǎn)換成bool
            小于或等于(Less or equal)   a <= b        T是LessThanComparable   可轉(zhuǎn)換成bool
            大于或等于(Greater or equal)a >= b        T是LessThanComparable   可轉(zhuǎn)換成bool

            表達(dá)式語義

            一個表達(dá)式的語義只有在這種情況下定義,當(dāng)它沒有定義在Container, EqualityComparable, 或者LessThanComparable,或者有額外的信息。
            名字                 表達(dá)式         前提  語義                                                                         后置
            等式(Equality)       a == b               如果a.size() == b.size()而且a中的每個元素都等于b中的對應(yīng)的元素,那么返回true。否則返回false。
            小于(Less)           a < b                相當(dāng)于lexicographical_compare(a,b)

            復(fù)雜性擔(dān)保

            等式和不等式的操作與容器的大小呈線性關(guān)系。

            不變

            順序 兩個不同的迭代器迭代一個前向容器的,都是以同樣的順序訪問它的元素,提供一個沒有干預(yù)性的操作。

            模型

            vector
            list
            slist
            deque
            set
            hash_set
            map
            hash_map
            multiset
            hash_multiset
            multimap
            hash_multimap

            注釋

            參見

            iterator overview, Forward Iterator, Sequence
            posted @ 2012-03-19 12:10 canaan 閱讀(1219) | 評論 (0)編輯 收藏
            僅列出標(biāo)題
            共5頁: 1 2 3 4 5 
            久久精品青青草原伊人| 精品久久久久久久无码| 国产一区二区三区久久精品| 人人狠狠综合久久亚洲高清| 久久99国产精品99久久| 国产91色综合久久免费| 国内精品久久九九国产精品| 韩国三级大全久久网站| 日韩精品久久久久久| 国产精品99久久久久久宅男| 中文精品久久久久国产网址| 青青草原综合久久大伊人精品| 99久久国语露脸精品国产| .精品久久久麻豆国产精品| 亚洲一本综合久久| 久久精品国产福利国产琪琪 | 国产精品伊人久久伊人电影| 色偷偷888欧美精品久久久| 久久久久久av无码免费看大片 | 女同久久| 一本色道久久HEZYO无码| 久久人人爽爽爽人久久久| 国产欧美一区二区久久| 国产精品嫩草影院久久| 一个色综合久久| 久久99国产精品二区不卡| 国产精品青草久久久久福利99| 一级女性全黄久久生活片免费 | 国产成人精品久久二区二区| 99久久精品久久久久久清纯| 欧美久久天天综合香蕉伊| 久久精品国产亚洲AV高清热 | 亚洲国产精品一区二区久久| 一级女性全黄久久生活片免费| 精品综合久久久久久888蜜芽| 久久久久亚洲精品天堂久久久久久| 77777亚洲午夜久久多喷| 7777久久亚洲中文字幕| 亚洲?V乱码久久精品蜜桃| 亚洲国产精品成人久久蜜臀 | 久久精品无码专区免费青青|