原创 linux下c/c++混合編程

首先,混合編程不是指在同一個文件裏寫C與C++。 比如說想在同意文件裏同時弱類型檢查,又強類型檢查,那真夠嗆。 混合編程包括:1,C++引用C的頭文件;2,g++生成的.o與gcc生成的.o相鏈接。 1,在用C語言寫的頭文件中,經常加上

原创 C++中類佔用空間

C++中類佔用空間 1、一個類佔用的空間主要是屬性(普通成員變量)佔用空間,而成員函數一般不佔用空間,但是虛函數佔用空間,需要說明的是,無論多少個虛函數,只要佔用4個字節即可,也就是索引指向一個虛擬表的首位置。另外需要說明的是佔用空間都考慮

原创 C/C++混合編程

C中調用C++,C++中調用C都會用到extern "C",但兩者的意義卻大不一樣!!先介紹在C++中調用C,這個大家都比較熟悉:例://C代碼[cpp]view plaincopyprint?<span style="font-famil

原创 一個使用C++寫好的程序,c程序如何使用?

  一個使用C++寫好的程序,c程序如何使用?  1. 採用 function (args)函數。 Function中利用C++類等模塊實現相應的功能。但是args中不包含與C++模塊(類)相關的類型,均爲C能接受的類型。如果需要返回本來需

原创 Linux下的段錯誤調試方法

簡而言之,產生段錯誤就是訪問了錯誤的內存段,一般是你沒有權限,或者根本就不存在對應的物理內存,尤其常見的是訪問0地址.一般來說,段錯誤就是指訪問的內存超出了系統所給這個程序的內存空間,通常這個值是由gdtr來保存的,他是一個48位的寄存器,

原创 linux下的靜態庫和動態庫分析

1.什麼是庫   在windows平臺和linux 平臺下都大量存在着庫。   本質上來說庫是一種可執行代碼的二進制形式,可以被操作系統載入內存執行。   由於windows和linux 的本質不同,因此二者庫的二進制是不兼容的。   

原创 C/C++項目中的代碼複用和管理

一 模塊功能單一化     模塊的功能要單一,這似乎是人盡皆知的原則。但是在編碼設計過程中,並不是誰都能小心的處理這個問題。     首先舉一個實際中的例子:在我們的Capsuit的“安全檢查”部件的開發過程中,我們開發了一個模塊,用於其他

原创 C++中extern “C”含義深層探索

1.引言  C++語言的創建初衷是“a better C”,但是這並不意味着C++中類似C語言的全局變量和函數所採用的編譯和連接方式與C語言完全相同。作爲一種欲與C兼容的語言,C++保留了一部分過程式語言的特點(被世人稱爲“不徹底地面向對象

原创 c與c++混合編程 (再續)

c與c++混合編程  C++語言的創建初衷是“a better C”,但是這並不意味着C++中類似C語言的全局變量和函數所採用的編譯和連接方式與C語言完全相同。作爲一種欲與C兼容的語言,C++保留了一部分過程式語言的特點(被世人稱爲“不徹底

原创 拷貝構造函數的參數爲什麼必須使用引用類型

在C++中, 構造函數,拷貝構造函數,析構函數和賦值函數(賦值運算符重載)是最基本不過的需要掌握的知識。  先從一個小例子開始:(自己測試一下自己看看這個程序的輸出是什麼?)view plaincopy to clipboardprint?

原创 預處理,編譯, 優化, 彙編, 鏈接

預處理,編譯, 優化, 彙編, 鏈接編譯程序讀取源程序(字符流),對之進行詞法和語法的分析,將高級語言指令轉換爲功能等效的彙編代碼,再由彙編程序轉換爲機器語言(目標文件),並且按照操作系統對可執行文件格式的要求鏈接生成可執行程序。C源程序頭

原创 C語言程序調用C++庫函數方法

 C語言程序調用C++庫函數方法,關鍵是函數名字解析問題。 其實實現起來不是很難。  使用關鍵字 extern \"C\" 可以使得C++編譯器生成的函數名滿足C語言的要求  例子如下:  鏈接庫頭文件:  //head.h  class 

原创 我的友情鏈接

51CTO博客開發李雲卓越始於足下Linux內核修煉之道 | Linux那些事兒李晨光原創技術博客流媒體技術工程組張亞勤的博客