日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀]前言谷歌的Protobuf的網(wǎng)址:https://developers.google.com/protocol-buffers/?csw=1按照國內(nèi)情況最好翻墻出去看一下.目前Protobuf的情況是主要支持Java, C++, orPython. 純C的,最新的版本不支持,貌似有一個好久之前

前言

谷歌的Protobuf的網(wǎng)址:https://developers.google.com/protocol-buffers/?csw=1

按照國內(nèi)情況最好翻墻出去看一下.

目前Protobuf的情況是主要支持Java, C++, orPython. 純C的,最新的版本不支持,貌似有一個好久之前支持的版本但不再更新.

支持C的Protobuf地址是:https://github.com/protobuf-c/protobuf-c這個版本貌似只能在linux下進行編譯生產(chǎn)打包工具.windows沒有看見有相應(yīng)的編譯工程.

使用方法,大家可以參考示例https://code.google.com/p/protobuf-c/wiki/Examples這個也是需要翻墻的.


方法

1、通過支持生成純C工具,將自己寫的腳本文件生成.c和.h文件可以參考以下方法

http://blog.csdn.net/menggucaoyuan/article/details/16107201

2、將生成的.c及.h包含到自己的工程項目中還要加上protobuf-c.c及protobuf-c.h文件

3、編譯一下,看編譯器提示什么錯誤,然后一步一步能解決掉特殊編譯器中的問題

可能需要修改protobuf里面的代碼

舉例來說,

1、我用VS2008的VC++使用與IAR相同的文件,像inline這個關(guān)鍵字VC++不認,需要調(diào)整為__inline

2、parse_packed_repeated_member的void *array = *(void **) member + siz * (*p_n);修改為

char*array = *(char**) member + siz * (*p_n);//modify by lanshuguang

3、修改一些變量定義為C標準的規(guī)范, 如把變量的定義放到函數(shù)的開頭等 (有些編譯器不會有如此問題,所以得看編譯器,像IAR FOR STM8S不會有問題)

4、經(jīng)過步驟3的處理,等到程序沒有任何error時,請留意warning的信息

比如,

a.8位單片機的地址尋址問題,畢竟protobuf設(shè)計是在32位的基礎(chǔ)上考慮的

b. 如對int的定義問題,PC及一些編譯器會把int定義為32位,而在IAR會為16位

c. 理解unsigned在C定義一個變量的意思,其實為unsigned int

建議

在單片機中使用protobuf這個東西時,盡量不要將變量定義成enum或者一些跟int類型相關(guān)的,這樣能夠盡可能少地觸發(fā)因為8位單片機尋址與32位CPU或芯片尋址的差異。

其他該注意的地方,需要多根據(jù)單片機的特性來考慮關(guān)注.


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉