Time of Update: 2018-12-03
1.大小寫不敏感的string類..可以看一下char_traits的定義,仿照定義一個自己的模版類,改寫static bool __cdecl eq(const _Elem& _Left, const _Elem& _Right) { if(_Left == _Right) return true; else{ _Elem maxElem = max(_Left, _Right); _Elem minElem = (_Left+_Right)-maxElem;
Time of Update: 2018-12-03
下面是<<C和指標>>上一道簡單程式題目如下:編寫一個程式,從標準輸入讀取幾行輸入。每行輸入要列印到標準輸出上,前面要加上行號。在編寫這個程式時要試圖讓程式能夠處理的的長度沒有限制。題目分析:通過從輸入中逐個字元讀取而不是逐行讀取,可以避免行長度限制。在這個解決方案中,如果定義了TRUE和FALSE符號,程式的可讀性會更好一些**//********從標準輸入複製到標準輸出,並輸出行標號********/#include<stdio.h>#include<
Time of Update: 2018-12-03
“該死系統存在記憶體流失問題”,項目中由於各方面因素,總是有人抱怨存在記憶體流失,系統長時間運行之後,可用記憶體越來越少,甚至導致了某些服務失敗。記憶體流失是最難發現的常見錯誤之一,因為除非用完記憶體或調用malloc失敗,否則都不會導致任何問題。實際上,使用C/C++這類沒有記憶體回收機制的語言時,你很多時間都花在處理如何正確釋放記憶體上。如果程式已耗用時間足夠長,如後台進程運行在伺服器上,只要伺服器不宕機就一直運行,一個小小的失誤也會對程式造成重大的影響,如造成某些關鍵服務失敗。對於記憶體流
Time of Update: 2018-12-03
RTT的學習集中在應用程式層,底層的代碼會在必要的時候涉及一下。 startup是RTT的啟動代碼,類似於ucos。 void rtthread_startup(void){ /* init board */ rt_hw_board_init(); /* show version */ rt_show_version(); /* init tick */ rt_system_tick_init(); /* init kernel object */
Time of Update: 2018-12-03
暑假比較虛度,看著案頭各種繁雜,就想設計一個軟體系統,能直接像捷徑功能表那樣開啟的,於是便寫了如下一款作品,平台vs2008,語言C#【】 核心代碼:private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { this.process.StartInfo.Verb = "Open";
Time of Update: 2018-12-03
1.C語言聲明的單獨文法成份 聲明器是C語言聲明的非常重要成份,他是所有聲明的核心內容,簡單的說:聲明器就是標識符以及與它組合在一起的任何指標、函數括弧、數組下表等,為了方便起見這裡進行分類表示。 1)指標 (1)* (2)* const (3)* volatile (4)* const volatile (5)* volatile const 2)直接聲明器 (1)標識符 (2)標識符[下表] (3)標識符(參數)
Time of Update: 2018-12-03
關於指標和數組斬不斷理還亂的恩怨還真是說了不少,不過現在應該已經理清了。有了上一講的基礎,本講的內容相對來說就比較容易理解了。1.指向函數的指標(函數指標)來分析這樣一個聲明,void (*f) ( ); 雖然()的優先順序高於*,但由於有括弧存在,首先執行的是解引用,所以f是一個指標;接下來執行( ),表明f指向一個函數,這個函數不返回任何值。現在得出結論:f是一個指向不接受參數且不返回任何值的函數的指標,簡稱函數指標(pointer to function)。對比一下int(*p) [100
Time of Update: 2018-12-03
C++是一種物件導向的程式設計語言,我們常用它來進行物件導向的程式開發。但是,面向過程的語言如C是否可以進行物件導向的編程呢?答案是肯定的。C語言雖然沒有物件導向語言的諸多特徵,包括其核心特徵即封裝、繼承和多態,但是我們都知道,物件導向編程的實質其實是一種編程思維方式,跟使用的語言並無必然關係,但是使用物件導向的語言可以使程式員更好地實現這一思維方式。“
Time of Update: 2018-12-03
最近一直在做一個項目,主要是將原本symbian c++寫的工程移植為qt版本。這其中遇到N多問題,自己也鮮有總結,接下來幾篇文章就總結一下這其中的一些方法經驗和教訓,大家一起交流。 symbian發展到symbian3和symbian4之後:原本的symbian c++生存空間越來越小,而qt將最終成為主要的趨勢。所以原本很多用symbian c++寫的項目都面臨著一個問題:要麼最新版本全部推倒用qt重寫,要麼做移植。 可能很多人會說:symbian
Time of Update: 2018-12-03
該篇講一些移植項目進展中出現的問題: 1:我們移植出最初版本之後,別組同事拿去參考,於是他們也搭建了環境,拉下代碼,編譯也通過,但是emulator下案頭點擊表徵圖都沒反應,也不報錯,這原因何在?當在emulator中點擊運行一個程式結果毫無反應時:主要有以下幾個原因 ①缺相應的dll庫,也許你的工程要用到很多自己寫的dll庫,結果缺失或者拷貝不到位,導致exe無法找到,從而啟動不了。 ②版本不對,比如原本開發是用的qt-mobility1.0.2,
Time of Update: 2018-12-03
在學校學C的那會兒,就已經知道switch...case的執行效率要相對if...else較高了(大體上講),因為從字面上和邏輯上看,switch...case是不用像if...else那樣做一系列比較判斷就可以直接定位到相應的條件分支的。不過也沒有深究過其中的原理。後來由於一偶然原因,就明白了其中的細節。今日碰巧看到一篇blog,是講作者對此問題的思考,我覺得作者的理解大體上都是對的,不過下面跟帖的人,有人鄙夷,有人諷刺,實在是影響網容網貌,對作者本人也是沒有起碼的尊重,無法建立起平等的溝通,
Time of Update: 2018-12-03
看了書後,照著書上的方法一步一步去做,卻失敗了,555真是的,寫書的人啊,卻不考慮一下細節問題建立一個目錄[liu@liu-desktop hellomod]$mddir hellomod[liu@liu-desktop hellomod]$cd hellomod[liu@liu-desktop hellomod]$vi hellomod.c/****************hellomod.c*******************************/#include <linux/
Time of Update: 2018-12-03
Know what functions C++ silently and calls 今天繼續學習一個條款,看到了本條款,讓我更加瞭解了C++的一些內部運行機理,思考了一番,覺得C++在這方面設計真的十分嚴密,不虧是一個很優秀的語言,讓C++一直是很受歡迎的語言。閑話少說。 每一個class都會有一個或多個建構函式、一個解構函式、一個copy
Time of Update: 2018-12-03
map<Key, Data, Compare, Alloc> map是一種關聯容器,儲存相結合形成的一個關索引值和映射值的元素。Map 是一種Pair Associative Container,意味著它的實值型別為 pair<const Key, Data>. 而且也是Unique Associative Container, 也就是任何兩個元素沒有相同的key值。map具有重要的屬性,就是在map對象中插入一個新元素不指向現有元素的迭代器失效。從map上刪除一個元素,
Time of Update: 2018-12-03
code不斷進步,在xcode4中引入了ARC的概念。您用或者不用它就在那裡,於是有了本文:如何在未使用arc的工程中引入一個使用了arc特性的檔案,如何在arc工程中引用未使用arc的檔案。其實說白了也很簡單就是在”Compile Sources”中對相應的檔案加入使用或者不使用arc的flagok,首選“Compile Sources”的位置:選中工程->TARGETS->相應的target然後選中右側的“Build Phases”,向下就找到“Compile
Time of Update: 2018-12-03
因為一些原因,我從一個用c++做背景程式的工作室轉到了用純C語言作為遊戲背景工作室, 而這兩套背景程式都可以號稱目前中國在角色扮演類遊戲中成熟的後台架構。。c++的架構我已經基本已經很清晰了,因為看了兩個月代碼。 而這套純C語言的是某網路遊戲公司幾個比較有名的後台,中國幾大國產遊戲都在用。 然後切實感受到了物件導向和結構語言之間的差異。。。。 物件導向更注重的設計,對象與對象的關係,是把遊戲中的實體都抽象出來為實體了。處理實體之間的訊息關係。 但是純c語言,因為沒有對象的概念,因此,就是以訊息
Time of Update: 2018-12-03
Declare destructors virtual in polymorphic base classes 1、為什麼要申明虛函數
Time of Update: 2018-12-03
筆記一直再做項目,隨時都會用到一些函數和方法,現在屬於一種原始積累狀態,將來用到的時候就隨便拿來用。省時又省力。。後續還會很多這樣的方法。大家也可以去找找。 //取當前日期string getCurDate(){time_t nowtime;time(&nowtime); //取目前時間值struct tm *tPtr;tPtr = localtime(&nowtime);char dateStamp[32];ACE_OS::sprintf(dateStamp,
Time of Update: 2018-12-03
1 每次開啟一個檔案後記得一定要檢查檔案是否開啟成功這點不僅是一個好習慣,同樣對我們程式的調試也很有協助。否則我們累了半天也沒有找出程式為什麼沒有得出我們想要的結果。最後才發現原來是檔案都沒開啟。。這豈不冤枉。。呵呵。2 如果我們準備重用已存在的流對象,我們必須在每次用完檔案後記得關閉(close)和清空(clear)檔案流。① 為什麼要關閉檔案流呢?
Time of Update: 2018-12-03
下面是我看過或收藏的一些C/C++書籍,希望能給想學或者提高自身水平的C++朋友一些協助(盡量按照從入門到提高水平排序)C語言1. C語言程式設計(TCPL, 絕對經典,值得一讀)2. C語言常見問題集 (C Faqs, 推薦)3. C陷阱與缺陷(C Traps And Pitfalls, 推薦)4. C和指標(Pointers on C, 推薦)5. C專家編程(Expert C Programming, 推薦)6. C語言介面和實現(推薦)7. C語言趣味程式百例精解8.