1、 #ifndef __hardware_h__
#define __hardware_h__
//**部分
#endif
這樣寫的意思就是,如果沒有定義__hardware_h__,則定義__hardware_h__,並編譯下面的**部分,直到遇到#endif。這樣,當重複引用時,由於__hardware_h__已經被定義,則下面的**部分就不會被編譯了,這樣就避免了重複定義。
另外乙個地方就是使用include時,使用引號與尖括號的意思是不一樣的。使用引號(「」)時,首先搜尋工程檔案所在目錄,然後再搜尋編譯器標頭檔案所在目錄。而使用尖括號(<>)時,剛好是相反的搜尋順序。
2、一般考慮跨平台使用方法如下:
#if defined(__cplusplus)||defined(c_plusplus) //跨平台定義方法
extern "c""處理其中的**,其中內部的**是通過extern"c"進行處理。如果是c語言編譯的中間檔案,要c++來呼叫,那麼就需要這個了,c++有了extern "c"就會按照c語言的方法進行函式命名。這樣編譯出來的中間檔案就是c樣式的函式名,c
c++都可以呼叫。
如果 c++ 編譯的中間檔案,要c語言來呼叫,是不行的。
c++之父在設計c++之時,考慮到當時已經存在了大量的c**,為了支援原來的c**和已經寫好c庫,需要在c++中盡可能的支援c,而extern"c"就是其中的乙個策略。因此,為了在c++**中呼叫用c寫成的庫檔案,就需要用extern"c"來告訴編譯器:這是乙個用c寫成的庫檔案,請用c的方式來鏈結它們。
這個{}裡面的#endif對應上面的#ifdef-cplusplus,#ifdef-cplusplus對應最後的#endif, #ifdef與#endif總是一一對應的,表明條件編譯開始和結束。
3、namespace android
namespace 是c++的乙個標識,表示定義乙個全域性空間。android **把整個android工程看作乙個namespace
在code中使用的時候可以用android::加具體的類方法。也可以直接使用using namespace android;
#endif
ROS OpenCV的常用標頭檔案解釋
include cv bridge類 這個類中提供的api主要功能是將影象從sensor msgs image型別轉化成cv mat型別。api cv bidge cvimage類 cv bridge中提供的資料結構,裡面包括opencv中的cv mat型別的影象資訊,影象編碼方式,ros標頭檔案等...
C 標頭檔案和原始檔的解釋
標頭檔案 h 原始檔 cpp 原始檔寫函式的定義,標頭檔案用於寫函式的宣告,包括類裡面的成員和方法的宣告 函式原型 define常數等,但一般來說不寫出具體的實現,除了宣告也有一些例外,不如static這種,或者只在該函式域起作用的,不過多解釋 在寫標頭檔案時需要注意,在開頭和結尾處必須按照如下樣式...
Linux標頭檔案 C C 標頭檔案
linux標頭檔案 c c 標頭檔案。linux常用標頭檔案如下 posix標準定義的標頭檔案 目錄項 檔案控制 檔名匹配型別 路徑名模式匹配型別 組檔案 網路資料庫操作 口令檔案 正規表示式 tar歸檔值 終端i o 符號常量 檔案時間 字元擴充套件型別 internet定義 套接字本地介面 in...