Time of Update: 2018-12-04
最近有人問起C/C++混合編程的問題,google了一些資料放這裡==================================================http://www.gbunix.com/htmldata/2004_12/14/20/article_828_1.html如果C++程式要調用已經被編譯後的C函數,該怎麼辦?假設某個C函數的聲明如下:void foo(int x, int
Time of Update: 2018-12-04
C++ new_handler空間分配失敗處理 動態分配空間、記憶體動態分配與回收對於任何一個程式員來說都尤為重要,特別是嵌入式C/C++程式員更為如此,malloc, remalloc, new等等,很有可能就申請空間失敗,對申請失敗的異常處理更是比較棘手。在C++中提倡使用new來代替malloc,因為new比malloc更加安全,更加效率。 很多程式員,包括我自己都喜歡性的使用這種C/C++代碼來申請空間。 #include <iostream>#include
Time of Update: 2018-12-04
線程1.Thread類 1.1概述 Ice中的基礎線程是由ThreadControl類和Thread類來提供的(在IceUtil/IceUtil.h中定義): Thread類是一個抽象基類,擁有一個純虛方法run。要建立線程,必須特化Thread類,並實現run方法。 1.2 其成員函數
Time of Update: 2018-12-04
1. 訊息序列化 將具有一定結構的資料轉換成可以存取或者可以傳輸的形式,比如轉換成字元流的形式(char *)。通過序列化後,訊息可以在系統各邏輯模組或者網路中傳輸。 2.訊息還原序列化 顧名思義,還原序列化與序列化的過程相反。例如,將網路中傳過來的放在緩衝區的位元組流資料(char *)解碼成具有一定含義和結構的資料,然後便可以對接出來的資料進行處理。 3.執行個體 3.1) 序列化 3.2) 還原序列化 與上面過程相反。
Time of Update: 2018-12-04
群碩的筆試在語言方面主要是Java和C++,夾了一道C#題,趁記憶猶新的時候記下來 一、給了一棵二叉樹的前序走訪和中序遍曆,要求寫出後序遍曆。看一下資料結構就行了,很easy。提示:前序走訪的第一個節點為根結點,在中序遍曆中根結點的左邊節點是左子樹,右邊節點是右子樹,如此遞迴。 二、什麼是實體記憶體和虛擬記憶體,OS中為什麼要使用虛擬記憶體?看OS的書。 三、解釋一下C#中的“delegate”。原先不清楚的,然後在技術面試的時候問了一下面試官,原來類似於一個隊列,隊列中存的是函數指標(託管函數
Time of Update: 2018-12-04
P5: Line -1: 每一個non-inline member function 只會誕生一個函數實體. 至於每一個"擁有零個或一個定義"的 inline function 則會在其每一個使用者(模組)身上產生一個函數實體.這句話不太理解, 難道inline function 會放在對象所儲存的記憶體空間中?我已經測試過了,帶不帶inline function的對象大小都是一樣的. 需要弄清楚這句話到底表達什麼樣的意思.P32: Line 8:現在, 請看這種情況:Bear
Time of Update: 2018-12-04
c++ 操作符重載 /* file = main.cpp 涉及操作符重載,友元函數,重載類型轉換*/#include <iostream>#include "testClass.h"using namespace std;int main(){ testClass tc1(2); testClass tc2(3); testClass tc3 = 1 + tc1 + tc2 + 4;// 重載加法 testClass tc4 = 5 - tc2 - tc1
Time of Update: 2018-12-04
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgo ALTER proc [dbo].[gb] @table_namevarchar(8) AS declare @sql Nvarchar(1000) set @sql='update ' + @table_name +' setid='+'123456 '+' where id='+'123'--set @sql='update ' + ' aa '+'setid='+'123456 '+ ' where
Time of Update: 2018-12-04
stdarg.h中定義處理可變參數函數的方法。我們常用的printf,scanf等函數,都是以此做處理的,平時寫代碼的時候很少使用到,但是學習多一種方法,明白更多使用方法。其實變參數的實現是通過編譯時間參數壓入棧的位置去尋找的。而正確處理需要給出對應的結構類型,因為需要根據結構大小取資料值。明白了這個原理,理解並寫處理不定參數的函數並不難。Variable arguments handlingThis header defines macros to access the
Time of Update: 2018-12-04
/******************************************************************* Thread Pool For Win32 * VC++ 6, BC++ 5.5(Free), GCC(Free)* Update : 2004.6.9 llBird wushaojian@21cn.comUse:1):void threadfunc(void *p){ //...} ThreadPool tp; for(i=0; i<100;
Time of Update: 2018-12-04
解決外部符號錯誤:_main,_WinMain@16,__beginthreadex在建立MFC項目時, 不使用MFC AppWizard嚮導, 如果沒有設定好項目參數, 就會在編譯時間產生很多串連錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainLIBCD.lib(wincrt0.obj) : error LNK2001: unresolv
Time of Update: 2018-12-04
在C/C++大型項目中,錯誤管理在項目中起著舉足輕重的作用,以我自己的項目經驗以及觀摩其他項目,錯誤管理對項目架構以及開發效率有著很大的影響。對於錯誤管理的認識大致分為三類:剛剛開始寫程式的新手,滿篇程式看不到一處關於返回出錯的處理,更不用說出錯管理了。說明他沒認識到出錯管理的重要性程式中到處都能看到關於出錯的處理。認識到了錯誤,但是處理方式欠缺程式中幾乎不會很明顯的看到關於錯誤的處理。這是錯誤管理的最高境界。
Time of Update: 2018-12-04
C++做久了,經常用C++的方式去思考問題,有時候就突然發現自己不太會寫C程式了。寫程式的時候,難免會用到第三方外掛程式或者是庫,而這些外掛程式或者庫很多時候都不能完全滿足我們的需求,遇到這種情況,如果全是C++,那好辦,寫個適配器就OK了,關於適配器模式參考我的部落格《C++ Adaptor 設計模式》 如果要提供給C程式使用,那就需要自己封裝C程式可以使用的庫。前幾天在CSDN
Time of Update: 2018-12-04
./depcomp: line 512: exec: g++: not found make[2]: *** [my_new.o] 錯誤 127 make[2]: Leaving directory `/usr/local/setup/mysql-5.1.68b/mysys' make[1]: *** [all-recursive] 錯誤 1 make[1]: Leaving directory `/usr/local/setup/mysql-5.1.68b' make: *** [all]
Time of Update: 2018-12-04
一、位元運算符C語言提供了六種位元運算符:& 按位與| 按位或^ 按位異或~ 取反<< 左移>> 右移1. 按位與運算 按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。例如:9&5可寫算式如下: 00001001 (9的二進位補碼)&00000101 (5的二進位補碼) 00000001 (1的二進位補碼)可見9&5=1。
Time of Update: 2018-12-04
一、運算子的優先順序表C 語言的符號眾多,由這些符號又組合成了各種各樣的運算子。既然是運算子就一定有其特定的優先順序,下表就是C 語言運算子的優先順序表:註:同一優先順序的運算子,運算次序由結合方向所決定。上表不容易記住。其實也用不著死記,用得多,看得多自然就記得了。也有人說不用記這些東西,只要記住乘除法的優先順序比加減法高就行了,別的地方一律加上括弧。這在你自己寫代碼的時候,確實可以,但如果是你去閱讀和理解別人的代碼呢?別人不一定都加上括弧了吧?所以,記住這個表,我個人認為還是很有必要的。二、
Time of Update: 2018-12-04
C語言的優先性和結合方向問題C語言的書籍的附錄都要說一個問題,就是優先性和結合方向。 我的理解是這些是建立在運算式的基礎之上的,寫一個c語言的運算式或者看一個C語言的運算式,先看優先性,在優先性相同的情況下,再根據結合方向,判斷運算式的那個部分先運算,那個後運算。如: 1. a=b=c=0,只有一個=,因此優先性相同,因此看結合方向,結合方向是從右至左,因此,整個表達是從右開始計算,上面等價與a=(b=(c=0)),這是正確地,但是下面這個問題該怎麼解釋哪? 2. a=*p+
Time of Update: 2018-12-04
同事給的幾道題目1.介紹一下STL,詳細說明STL如何?vector。4.指標和引用有什麼分別;如果傳引用比傳指標安全,為什嗎?如果我使用常量指標難道不行嗎?5.參數傳遞有幾種方式;實現多態參數傳遞採用什麼方式,如果沒有使用某種方式原因是什嗎?6.結合一個項目說明你怎樣應用設計模式的理念。7.介紹一下你對設計模式的理解。(這個過程中有很多很細節的問題隨機問的)8.C++和C定義結構的分別是什麼。9.建構函式可否是虛汗數,為什嗎?解構函式呢,可否是純虛的呢?10,拷貝建構函式相關問題,深拷貝,淺拷
Time of Update: 2018-12-04
c#實現斷點續傳 在瞭解HTTP斷點續傳的原理之前,讓我們先來瞭解一下HTTP協議,HTTP協議是一種基於tcp的簡單協議,分為請求和回複兩種。請求協議是由客戶機(瀏覽器)向伺服器(WEB SERVER)提交請求時發送報文的協議。回複協議是由伺服器(web server),向客戶機(瀏覽器)回複報文時的協議。請求和回複協議都由頭和體組成。頭和體之間以一行空行為分隔。 以下是一個請求報文與相應的回複報文的例子:GET /image/index_r4_c1.jpg HTTP/1.1Accept:
Time of Update: 2018-12-04
1.進程和線程的差別。 線程是指進程內的一個執行單元,也是進程內的可調度實體. 與進程的區別: (1)調度:線程作為調度和分配的基本單位,進程作為擁有資源的基本單位 (2)並發性:不僅進程之間可以並發執行,同一個進程的多個線程之間也可並發執行 (3)擁有資源:進程是擁有資源的一個獨立單位,線程不擁有系統資源,但可以訪問隸屬於進程的資源. (4)系統開銷:在建立或撤消進程時,由於系統都要為之分配和回收資源,導致系統的開銷明顯大於建立或撤消線程時的開銷。 2.測試方法