Time of Update: 2018-12-05
寫在前面的話 自從拙文《從彙編層面深度剖析C++虛函數》 見於csdn首頁後,受到很多讀者的好評。本人甚是高興,並且打算從彙編的角度來分析C++中的語言構造,比如對象的布局,多繼承下的物件版面配置以及它們的虛函數表的結構,我想這些都是C++開發人員所感興趣的。 此外,本人目前從事的是Linux平台下的C語言系統開發,工作中並沒有真正寫過C++程式,因此,文中所使用的術語和分析未必見得準確無誤,還請各位多多指正。
Time of Update: 2018-12-05
原文地址:http://www.51cto.com/html/2005/0927/3844.htm一、預先處理的由來:在C++的曆史發展中,有很多的語言特徵(特別是語言的晦澀之處)來自於C語言,預先處理就是其中的一個。C++從C語言那裡把C語言前置處理器繼承過來(C語言前置處理器,被Bjarne博士簡稱為Cpp,不知道是不是C Program
Time of Update: 2018-12-05
要設定快速鍵必須使用user32.dll下面的兩個方法。 BOOL RegisterHotKey( //註冊系統熱鍵的API函數 HWND hWnd, int id, UINT fsModifiers, UINT vk ); BOOL UnregisterHotKey( //刪除系統熱鍵的API函數 HWND hWnd, int id ); 在C#中引用命名空間System.Runtime.InteropServices;來載入非託管類user32.dllusing
Time of Update: 2018-12-05
今天開啟VS2005開啟項目,發現項目中有一個表單中的控制項都不見了,對表單的屬性和控制項的一些屬性頁面進行了一般瀏覽,但是都沒有發現什麼現象,Visible=true等屬性都是正常的。於是到網上搜素,對這個現象有幾個說法,有建議重新設計表單,有認為是BUG,有人認為是Designer.cs檔案中出問題了。 問題還真出在Designer.cs檔案中,檔案中的this.Controls.Add()語句不見了,所以將一些容器或者控制項加進去就OK了。
Time of Update: 2018-12-05
文章目錄 關於P-Stade.Oven範例程式碼 關於P-Stade.Oven P-Stade.Oven是一個Boost.Range的擴充庫,同時也是Range Library Proposal提案的一個具體實現。藉助於這個類庫,我們就能在Range上實施STL演算法,從而獲得更為簡潔清晰的代碼。 範例程式碼#include<iostream>#include<vector>#include <pstade/
Time of Update: 2018-12-05
在Managed 程式碼的DLL中,即使是C++代碼,也跟這個DLL有莫大的關係。如果時機掌握不得當,就會在程式退出的時候出現0xC0020001錯誤。即機器碼引用了一個Managed 程式碼的相關內容,而這個時候Managed 程式碼已經卸載了。這個時候,需要將這部分代碼完全交由機器碼的DLL來實現。完全的意思是,預設建構函式/解構函式/拷貝賦值等等函數,只要Managed
Time of Update: 2018-12-05
用了一段時間.net的代理模式,覺得挺好使.且原來C++代碼中存在大量需要代理的東西,由於沒有近似的東西,都是靠介面實現的,看起來很彆扭.遂想我是不是也能做這麼一個東西.boost的function不是很熟悉,但基本實現還是明白的.直接用boost::function的話,有點殺雞用牛刀的感覺,因為我僅僅只要一個很小很小的代理文法而已.況且,這麼多年過去了,寫C++代碼越來越沒有激情,正好有這麼個契機,給自己來點激情.廢話不多說,看代碼(別看注釋,沒有注釋,看不懂就去看boost::functi
Time of Update: 2018-12-05
純C++代碼在大多數情況下並不適合直接加入到C++/CLI項目裡.相同的純C++代碼,在C++/CLI項目中,效率要比原生代碼低得多。各種inline,SSE指令,自動SIMD指令都會失效。如果這個時候,自作聰明的在純C++代碼上關閉Managed
Time of Update: 2018-12-05
最近看到Unity3D中的Coroutine,思路相當值得借鑒。 在伺服器(尤其是基於事件驅動架構的伺服器)編程中,非同步作業是難以避免的。傳統的非同步作業會因為大量的回調操作造成邏輯的支離破碎,再加上狀態維護和各種異常處理,很容易就將代碼的複雜度提升到外星人才能理解的程度。比如,有這樣一個寵物AI:等待主人下達移動命令;移動到目標地點;等待3秒鐘;喊話; 常用的編程模式(非輪詢):class Pet{ public event MoveCompleted; public
Time of Update: 2018-12-05
使用doxygen為C/C++程式產生中文文檔(上)按照約定的格式注釋原始碼,用工具處理注釋過的原始碼產生文檔。通過這種方式產生文檔至少有以下好處:便於代碼和文檔保持同步。 可以對文檔做版本管理。
Time of Update: 2018-12-05
第三章
Time of Update: 2018-12-05
關於C#中timer類 在C#裡關於定時器類就有3個 1.定義在System.Windows.Forms裡 2.定義在System.Threading.Timer類裡 3.定義在System.Timers.Timer類裡System.Windows.Forms.Timer是應用於WinForm中的,它是通過Windows訊息機制實現的,類似於VB或 Delphi中的Timer控制項,內部使用API SetTimer實現的。它的主要缺點是計時不精確,而且必須有訊息迴圈,Console
Time of Update: 2018-12-05
前面兩篇基本把指標給介紹完了,相信大家對指標已經不是那麼陌生了。也不會因為指標和數組之間的關係而導致混淆了。大家可能也迫不及待想瞭解下後來的知識。今天我們就介紹下結構體。 對於結構體,既然叫結構體,形象上我們可以理解其就是一堆資料集合在一起形成一個結構。就比如一個學生的資訊包括:學號、姓名、班級、年齡等等。這些資訊都是屬於這個學生的,因此我們就可以將這些資訊統一綁定在一起。形成一個學生實體,這裡有點C++的味道。我們學C也還是有必要這樣思考。在我們周圍幾乎每一樣東西都有它自己的資訊或者組成。比如
Time of Update: 2018-12-05
在比如使用彙編指令如:ADC, SBB等指令時,我們為了心裡那份好奇感就不得不去瞭解下FLAG寄存器(EFL)裡面的東西。通過二進位詳細的查看各標誌位的值。然後這些需要用到標誌寄存器的指令等就一目瞭然了。 - -迫不及待寫了段測試代碼來看看其中的秘密:#include <iostream>int main( void ){ __asm { mov al, 0xff mov dl, 0x01 add al, dl
Time of Update: 2018-12-05
最近因為研究一個東西,並且在很久以前就想把python好好看看。正好滿足我的好奇心。我每天上班做得遊戲都是用lua,也是一門很強大的指令碼語言。可能我更喜歡python的縮排區分和物件導向吧。 今天唯寫一個簡單的例子。一個簡單的python指令碼,就一個函數,用C/C++去調用。可能這也是作為程式來說最關心的一件事。所以我的python筆記也就最先寫這塊。- - 好切入正題: #include <Python.h>#include <stdio.h>void test(
Time of Update: 2018-12-05
聲明:1.當初自己在找緩衝區產生演算法時,非常難找,網上實現的代碼更是沒有,只有寥寥的幾句理論,在N天之後在網上搜到了兩篇論文,是《一種GIS緩衝區向量產生演算法及實現》和《GIS緩衝區和疊加分析》,自己根據自己的理解,寫出了這個實現的代碼,希望能給需要的人員一點協助,當然,寫的非常簡單,沒有處理銳角情況(下一步計劃將會實現),也沒有處理自相交情況(正在解決......),大家若是有什麼好的意見,請告訴我。謝謝。2.本代碼只實現了產生緩衝區邊界點,沒有處理銳角情況(下一步計劃將會實現),也沒有處
Time of Update: 2018-12-05
//scanner.l%{/* need this for the call to atof() below */#include <math.h>%}DIGIT [0-9]ID [a-z][a-z0-9]*%%{DIGIT}+ { printf( "An integer: %s (%d)/n", yytext, atoi( yytext ) );
Time of Update: 2018-12-05
class rational{public: rational(int numerator=1,int demominator=1); rational(const rational&); int GetNumerator() const; int GetDemominator() const; void PrintRational() const; void SetNumerator(int numberator); void SetDemominator(int
Time of Update: 2018-12-05
新手問題C#中的變數如何傳給SQL,比如SqlCommand myCommand = new SqlCommand("select zkzh,school,name,n1,fzf from yw01 where substring(zkzh,5,3)='001'"我想將'001'換成一個變數fkd,應該用什麼方法,是不是在變數前加什麼字元? 1.string fzf = "001";SqlCommand myCommand= new SqlCommand("select
Time of Update: 2018-12-05
不論您在學習或者借用這裡無疑是個好地方:http://csharp-source.net/C# Open SourceOpen Source Aspect-Oriented Frameworks in C#AspectSharp - Aspect# (pronunced as AspectSharp) is a free AOP ( Aspect Oriented Programming ) framework for the .NET Framework, it uses Dynamic