前言
最近C++項(xiàng)目需要用到腳本,這就關(guān)系到如何綁定對(duì)象到腳本運(yùn)行環(huán)境。因使用到多套腳本語(yǔ)言,所以現(xiàn)有的綁定技術(shù),都不能滿(mǎn)足需求。所以只能尋求解析C++的頭文件,再根據(jù)描述進(jìn)行綁定。起初發(fā)現(xiàn)boost有一套,但boost實(shí)在太臃腫了,對(duì)項(xiàng)目之后開(kāi)發(fā)環(huán)境的搭建有一定要求。我力求最簡(jiǎn)明的項(xiàng)目管理,boost不太適合。自己寫(xiě)套吧。
正文
C++的語(yǔ)法格式總結(jié)
- 除編譯器指令#開(kāi)頭與函數(shù)外,均必須要求分號(hào)結(jié)尾
- 代碼塊除單條語(yǔ)句的if、do/while、for都必須在大括號(hào)/花括號(hào)“{}” 代碼塊有8種,命名空間,全局,類(lèi),結(jié)構(gòu),全局函數(shù),成員函數(shù),lambda,函數(shù)內(nèi)無(wú)名代碼塊
- 命名空間與全局相同,僅在聲明前加“命名空間::”前綴
- 類(lèi)聲明塊與全局塊的區(qū)別有,友元聲明,成員訪問(wèn)權(quán)限
- 模板支持類(lèi)與函數(shù)
- 函數(shù)與模板有參數(shù)列表
- 分號(hào)結(jié)尾的聲明可以是內(nèi)置類(lèi)型(int、double等)、類(lèi)、模板類(lèi)、typedef出來(lái)的類(lèi)型、函數(shù)指針、lambda
- 函數(shù)可以重名
- 類(lèi)的成員函數(shù)訪問(wèn)其他成員可以在此函數(shù)定義之后聲明,并不像全局函數(shù)那樣必須已經(jīng)聲明,所以用指針掃描一次C++文件是否合法是做不到的
- 若是類(lèi)化的枚舉(enum class),不需要對(duì)聲明所在范圍可見(jiàn),否則同時(shí)要把成員也同時(shí)添加到所屬范圍
我不打算支持的,對(duì)于需求沒(méi)有必要性的
- 命名空間
- 模板
- 函數(shù)體
- 逗號(hào)分割的多個(gè)變量我不想很好的支持
- 類(lèi)型的校驗(yàn)
- 默認(rèn)參數(shù)
- union
- 枚舉不判斷名稱(chēng)沖突
- lambda
- 變量名不能以數(shù)字開(kāi)始
- 類(lèi)的繼承
- 函數(shù)指針
開(kāi)發(fā)的原則
- 暫不跨平臺(tái),僅VS,不使用系統(tǒng)API這樣適于修改為跨平臺(tái)
- 使用C++
- iter只進(jìn)不退
- 遇到語(yǔ)法錯(cuò)誤或文件結(jié)尾,拋異常
- 遇到{則進(jìn)入塊處理
- 處理;結(jié)尾的語(yǔ)言單元,函數(shù)必須自己處理完;及之前的內(nèi)容再返回
- 成員函數(shù)定義代碼不分析,因?yàn)榈谝粭l原則做不到,成員函數(shù)可能會(huì)引用還未聲明的其他成員函數(shù)
- 不為最好的性能,但可以在這個(gè)結(jié)構(gòu)上優(yōu)化到極致
- 不求完整解析,但在這個(gè)框架上可以做到解析全部c++11與更高的版本特性
- 無(wú)注釋?zhuān)⑽牟缓茫形淖⑨層植贿m合全球化
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26