久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 編程 > Golang > 正文

在Golang中使用C語言代碼實例

2020-04-01 19:26:07
字體:
供稿:網(wǎng)友
這篇文章主要介紹了在Golang中使用C語言代碼實例,本文先是給出了一個Hello World例子、Golang 引用 C例子,并總結(jié)了一些要注意的地方,需要的朋友可以參考下
 

cgo 使得在 Golang 中可以使用 C 代碼。

Hello World

為了有一個較為直觀的了解,我們來看一個簡單的例子,創(chuàng)建文件 main.go:

復(fù)制代碼代碼如下:

package main
 
/*
#include <stdio.h>
 
void sayHi() {
    printf("Hi");
}
*/
import "C"
 
func main() {
    C.sayHi()
}

執(zhí)行程序:
復(fù)制代碼代碼如下:

go run main.go

程序執(zhí)行并輸出 hi(更多的范例可以見 $GOROOT/misc/cgo)。

 

Windows 下的準(zhǔn)備工作

如果想要在 Windows 上使用 cgo,那么需要安裝 gcc 編譯器,這里我使用 mingw-w64。

設(shè)置編譯和鏈接標(biāo)志

我們使用 import “C” 導(dǎo)入的是一個偽包(pseudo-package),我們通過其來使用 C 代碼。在 import “C” 之前,緊跟著 import “C” 的注釋可以包括:

1.編譯器和鏈接器標(biāo)志
2.C 代碼

我們可以通過 #cgo 指令來設(shè)置編譯器和鏈接器標(biāo)志,例如:

復(fù)制代碼代碼如下:

// #cgo CFLAGS: -DPNG_DEBUG=1
// #cgo amd64 386 CFLAGS: -DX86=1
// #cgo LDFLAGS: -lpng
// #include <png.h>
import "C"

 

附帶提及一點的是,這些指令中可以包含構(gòu)建約束(build constraint),詳細(xì)內(nèi)容見:http://golang.org/pkg/go/build/#hdr-Build_Constraints。

常用的 #cgo 指令有:

1.CPPFLAGS、CFLAGS 指令被用于編譯當(dāng)前包中的 C 文件(任何的 .c、.s、.S 文件)
2.CPPFLAGS、CXXFLAGS 指令被用于編譯當(dāng)前包中的 C++ 文件(任何的 .cpp、.cc、.cxx 文件)
3.LDFLAGS 指令用于指定鏈接器標(biāo)志
4.pkg-config 指令用于通過 pkg-config 工具獲取編譯器和鏈接器標(biāo)志(例如:#cgo pkg-config: png cairo)

Golang 引用 C

結(jié)構(gòu)體上需要注意的點:

1.C 結(jié)構(gòu)體的域名稱如果為 Golang 的關(guān)鍵字時,訪問時需要在域名稱前面加上 _。比如說,C 中有一個結(jié)構(gòu)體變量 x,此變量對應(yīng)的結(jié)構(gòu)體中有一個域 type,那么在 Golang 中需要通過 x._type 來訪問 type 域
2.結(jié)構(gòu)體的位域、非對齊數(shù)據(jù)等無法在 Golang 中表示時會被忽略
3.Golang 結(jié)構(gòu)體中不能使用 C 類型的域

標(biāo)準(zhǔn)的 C 數(shù)值類型對應(yīng):

1.C.char
2.C.schar(signed char)
3.C.uchar(unsigned char)
4.C.short
5.C.ushort(unsigned short)
6.C.int
7.C.uint(unsigned int)
8.C.long
9.C.ulong(unsigned long)
10.C.longlong(long long)
11.C.ulonglong(unsigned long long)
12.C.float
13.C.double

任何的 C 函數(shù)(包括 void 函數(shù))都可以返回一個返回值和 C 的 errno 變量(作為錯誤):

復(fù)制代碼代碼如下:

n, err := C.sqrt(-1)
_, err := C.voidFunc()

 

直接調(diào)用 C 函數(shù)指針目前還無法支持。

有一些特殊的函數(shù)可以用于 C 類型和 Golang 類型之間轉(zhuǎn)換(通過數(shù)據(jù)拷貝的方式),偽定義如下:

 

復(fù)制代碼代碼如下:

// Golang 的字符串轉(zhuǎn)為 C 字符串
// C 的字符串是使用 malloc 分配的,因此,此函數(shù)的調(diào)用者
// 需要調(diào)用 C.free 來釋放內(nèi)存
func C.CString(string) *C.char
 
// 轉(zhuǎn)換 C 字符串到 Golang 字符串
func C.GoString(*C.char) string
 
// 轉(zhuǎn)換一定長度的 C 字符串到 Golang 字符串
func C.GoStringN(*C.char, C.int) string
 
// 轉(zhuǎn)換一塊 C 內(nèi)存區(qū)域到 Golang 的字節(jié)數(shù)組中去
func C.GoBytes(unsafe.Pointer, C.int) []byte

 

其他需要注意的點:

1.C 語言中的 void* 對應(yīng) unsafe.Pointer
2.C 語言中的結(jié)構(gòu)、聯(lián)合、枚舉類型(而非變量),在 Golang 中需要加上 struct_、union_、enum_ 前綴訪問。由于 Golang 中沒有聯(lián)合這種數(shù)據(jù)類型,因此 C 的聯(lián)合在 Golang 中被表示為字節(jié)數(shù)組
3.和 C 語言等價的那些類型是不可以導(dǎo)出的


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美日韩国产综合一区二区三区| 亚洲久久久久久久久久久| 做爰视频毛片视频| 精品福利一区二区| 99免费在线观看视频| 97超碰人人干| 欧美岛国在线观看| 欧美黑人又粗又大又爽免费| 久久蜜桃精品| 久久大大胆人体| 性久久久久久久久久久| 又紧又大又爽精品一区二区| 你懂的网址一区二区三区| 亚洲欧美自拍视频| 日韩午夜av一区| 操人视频免费看| 亚洲人吸女人奶水| 日韩欧美一区二区三区四区 | 亚洲女性喷水在线观看一区| 鲁丝一区鲁丝二区鲁丝三区| 亚洲精品成av人片天堂无码 | 亚洲男人天堂2024| 最新天堂中文在线| 中文字幕综合网| 偷拍视频一区二区| 国产东北露脸精品视频| 北条麻妃高清一区| 日韩精品久久久| 日本一区二区视频| 日韩一级片免费看| 国产精品一区二区久久国产| 91亚洲国产成人久久精品麻豆 | 日批免费在线观看| 日本精品免费一区二区三区| 香蕉污视频在线观看| 午夜剧场成人观在线视频免费观看| 毛片基地在线观看| 欧美色图色综合| 日韩不卡一区二区三区| 欧美午夜精品免费| 91精品视频在线免费观看| 男人的天堂免费| 欧美日韩国产va另类| 91久久国产自产拍夜夜嗨| 免费观看日韩毛片| aaa国产视频| 欧美午夜理伦三级在线观看| 国产精品欧美亚洲777777| 91网上在线视频| 亚洲国产精品黑人久久久| 国产免费一区二区| 在线观看美女av| 中文字幕日韩一区二区三区不卡| 国产精品久久免费观看| 国产九九视频一区二区三区| 欧美变态凌虐bdsm| 亚洲欧洲精品一区二区| 亚洲欧美自拍视频| 欧美日韩不卡在线| 中国一区二区三区| 亚洲精品国产精品国| 一本色道**综合亚洲精品蜜桃冫| 久久综合九色综合久99| 久久久久亚洲av成人片| 91精品国产高清一区二区三区 | 日韩av电影免费播放| 国产美女精品一区二区三区| 国产视频一区二区三区四区| 美国欧美日韩国产在线播放| 国产精品果冻传媒潘| 国内久久精品视频| 欧美黄色免费网址| 亚洲图片你懂的| 尤物国产在线观看| 欧美精品一区二区三区在线 | h色网站在线观看| 在线日韩精品视频| 国产成人av免费| 欧美亚洲日本黄色| 91在线观看免费高清| 日韩欧美黄色动漫| 久久99久久99精品| 北条麻妃国产九九精品视频| 国产在线高清精品| 精品无人码麻豆乱码1区2区 | www.亚洲成人网| 亚州欧美一区三区三区在线| 国产性猛交96| 欧美日韩三级一区二区| 95视频在线观看| 亚洲欧洲在线观看| 亚洲熟妇av乱码在线观看| 久久久久久成人| 97se亚洲国产综合自在线观| 日韩一级片播放| 欧美一级二级三级蜜桃| www.5588.com毛片| 日韩精品免费综合视频在线播放| 久久黄色精品视频| avove在线观看| 欧美人xxxx| 亚洲免费av在线| 中文字幕av久久爽一区| 亚洲欧美日韩精品久久奇米色影视| 性生交生活影碟片| 密臀av一区二区三区| 日韩精品中文字幕在线一区| 狠狠色综合播放一区二区| 黄色免费视频大全| 男的插女的下面视频| 在线观看91视频| 久久精品视频免费播放| 欧美片一区二区三区| 成人在线观看免费高清| 国产成人久久久精品一区| 国产精品一区二区三区乱码 | 亚洲免费一在线| 天天想你在线观看完整版电影免费| 欧美无乱码久久久免费午夜一区| 手机在线观看日韩av| 一区二区三区日韩精品| 1769国内精品视频在线播放| 亚洲乱码一区二区三区在线观看| 国产精品旅馆在线| 中文字幕在线不卡一区二区三区| 国产伦精品一区二区三区视频我| 青青青在线播放| 国产成+人+综合+亚洲欧洲| 色综合视频在线观看| 国产小视频免费观看| 蜜乳av中文字幕| 91麻豆福利精品推荐| 国内精品久久久| 一区二区三区小说| 欧美少妇一区二区| 最好看的中文字幕久久| 国产av无码专区亚洲av| 亚洲国产综合视频| 国产成人a亚洲精v品无码| 97人人模人人爽人人喊中文字| 一区二区三区中文免费| www.色综合.com| 波多野结衣一二区| 国产精品九九视频| 日韩欧美99| 欧美福利视频在线| 亚洲精品乱码久久久久久黑人| 国产精品视频免费在线| 久99久精品视频免费观看| 国产精品成人在线视频| 亚洲国产精品第一页| 国产一区二区高清不卡| 91av一区二区三区| 亚洲欧洲日韩国产| 欧美在线视频全部完| av网站一区二区三区| 黄色小视频免费观看| 日韩欧美综合视频| 国产乱码一区二区三区四区| 国产欧美一区二区三区另类精品 | 亚洲欧美日韩国产一区二区三区| www.欧美国产| 亚洲欧美高清视频| 亚洲黄色在线播放| 丁香花免费高清完整在线播放 | 色综合色狠狠天天综合色| 中文字幕综合网| 青青青青草视频| 欧美日韩国产一中文字不卡| 亚洲国产精品二十页| 亚洲人成伊人成综合网小说| 99久久er热在这里只有精品15| 丝袜美腿亚洲综合| 福利91精品一区二区三区| 极品少妇一区二区| 中文字幕 久热精品 视频在线| 久久久久综合网| 欧美日韩一区二区三区免费看 | 三年中国中文在线观看免费播放| 国产精品播放| 交换做爰国语对白| 精品人妻人人做人人爽夜夜爽| 一女三黑人理论片在线| 精品人妻一区二区三区免费看| 女人18毛片一区二区三区| 亚洲国产精品成人综合 | 日本特黄a级片| 中文字幕免费高清视频| 国产一级黄色av| 日韩不卡一二三区| 国产精品午夜在线| 亚洲黄一区二区三区| 国产精品国产成人国产三级 | 欧美日韩激情视频在线观看| 麻豆免费在线观看视频| 免费看污黄网站在线观看| 蜜臀av午夜精品| 欧美一卡在线观看| 97久久精品人人澡人人爽缅北| 国产精品免费网站| 亚洲砖区区免费| 久久久久久久国产视频| 蜜臀99久久精品久久久久久软件| 久久蜜桃av一区二区天堂| 欧美va日韩va| 中文字幕在线中文字幕日亚韩一区| 小毛片在线观看| 日韩电影免费在线观看网站| 亚洲女同一区二区| 欧美在线观看日本一区| 超级碰在线观看| 国产无精乱码一区二区三区| 人人妻人人澡人人爽久久av| 一本久道久久综合中文字幕 | 蜜桃av中文字幕| 欧美日韩免费在线视频| 日韩高清国产一区在线观看| 羞羞影院体验区| 色久优优欧美色久优优| 精品国产乱码久久久久久久软件| 麻豆亚洲av成人无码久久精品| 亚洲成人免费在线观看| 精品无人乱码一区二区三区的优势 | 亚洲免费在线视频观看| 久久久久久久久久看片| 亚洲精品视频在线播放| 国产在线久久久| 国产九九热视频| 日韩电影在线观看一区| 欧美成人官网二区| 黄色一级在线视频| 成人综合婷婷国产精品久久蜜臀| 精品国产一区二区三区久久狼5月| 年下总裁被打光屁股sp| 国产偷国产偷精品高清尤物| av免费精品一区二区三区| 免费黄色片视频| 欧美一级欧美三级在线观看| 久久久久久久久久久一区| 99精品免费观看| 欧美激情视频一区二区| 丰腴饱满的极品熟妇| 亚洲风情在线资源站| 超碰成人在线免费观看| 麻豆一区二区三| 久久亚洲精品小早川怜子66| 手机免费观看av| 欧美mv和日韩mv国产网站| 超碰超碰超碰超碰超碰| 成人深夜视频在线观看| 91传媒免费看| 女人黄色一级片| 欧美三级三级三级爽爽爽| 成人在线免费观看av| 国产91露脸合集magnet| 成人国产精品久久久久久亚洲| 国产精品第72页| 欧美成人精品一区二区三区| 九九视频免费看| 亚洲国产精品美女| 男生裸体视频网站| 亚洲黄色av女优在线观看 | 午夜精彩视频在线观看不卡| 九色视频成人porny| 欧美成人一区二区视频| 欧美精品粉嫩高潮一区二区| 国产v亚洲v天堂无码久久久| 日韩av毛片在线观看| 美女av一区二区三区| 日本vs亚洲vs韩国一区三区二区| 91免费视频黄| 一本大道久久精品懂色aⅴ| 亚洲天堂小视频| 亚洲第一精品自拍| 亚洲精品国产欧美在线观看| 91久久伊人青青碰碰婷婷| 国产精品一卡二卡| 久久成人免费观看| 亚洲精品一区二区三区精华液 | 久久亚裔精品欧美| 国产日产欧美一区二区视频| 四虎精品一区二区| 欧美人与性动交| 国产福利视频一区二区三区| 噜噜噜久久亚洲精品国产品麻豆| 精品国产乱码久久久久久图片| 91中文字幕在线播放| www婷婷av久久久影片| 欧美一区二区免费视频| 一区二区三区精彩视频| 中文视频一区视频二区视频三区| 欧美丰满少妇xxxxx高潮对白| 五月婷婷视频在线| 致1999电视剧免费观看策驰影院| 欧美精品在线观看播放| 久久综合五月| 先锋资源在线视频| 欧美与欧洲交xxxx免费观看 | 国产亚洲精品久久| 亚洲精品18在线观看| 五月婷婷一区| 亚洲一区电影777| 老熟女高潮一区二区三区| 91av视频在线| 亚洲激情在线激情| 囯产精品一品二区三区| 亚洲高清无码久久| 免费av在线一区二区| 日韩一区二区高清| 国产美女视频91| 久久黄色免费视频| eeuss中文| 欧美最顶级丰满的aⅴ艳星| 日韩一区欧美小说| 国产精品污视频| 免费黄色在线视频| 国产一区 在线播放| 久久色精品视频| 欧美性xxxxxx少妇| 蜜臀久久99精品久久久久久9 | 亚洲 欧美 自拍偷拍| 免费观看成人网| 性色av一区二区三区| 成人高清免费观看| 中文字幕在线观看二区| 国产免费一区二区三区视频| 亚洲精品日韩激情在线电影| 中文字幕成人在线| 欧美美女bb生活片| 国产91久久婷婷一区二区| 久久这里只精品最新地址| www.久久久久久| 日韩三级视频在线| 一卡二卡三卡四卡| xxxx一级片| 成人午夜视频免费观看| 欧美日韩在线精品| 国产欧美日韩综合一区在线观看| 欧美精品videosex性欧美| 欧美高清激情brazzers| 国产亲近乱来精品视频| 男女性色大片免费观看一区二区 | 色8久久精品久久久久久蜜| 中文字幕在线观看国产| 丝袜制服一区二区三区| 亚洲a一级视频| 欧美精品一二三| 成人综合在线视频| 久久9热精品视频| 美腿丝袜在线亚洲一区 | 欧美激情视频网| 亚洲人成伊人成综合网小说| 久久99久久99精品| 7m第一福利500精品视频| 久久久国产精品亚洲一区| 91精品国产综合久久香蕉麻豆 | 91中文字幕一区| 日韩在线欧美在线| 亚洲精品乱码久久久久久按摩观| 精品少妇一区二区三区在线播放| 日韩国产高清视频在线| 精品亚洲aⅴ在线观看| 日韩av在线直播| 尤物yw午夜国产精品视频明星| 亚洲深夜福利在线| 久久的精品视频| 国产一区二区丝袜高跟鞋图片| 91网站免费观看| 成人三级视频在线观看一区二区| 九九久久99| 国产精品国模大尺度私拍| 国产一区二区无遮挡| 国产精品久久久久久久久久三级| 在线视频免费一区二区| 欧美一区二区三区免费| 在线免费精品视频| 亚洲成av人片在线观看无码| 91亚洲大成网污www| 婷婷国产v国产偷v亚洲高清| 精品视频资源站| 久久精品欧美视频| 精品亚洲欧美日韩| 亚洲久久中文字幕| 东京热无码av男人的天堂| 一区二区视频网站| 北条麻妃一区二区三区| 午夜欧美在线一二页| 亚洲欧美在线高清| 高清不卡一区二区| 91麻豆蜜桃一区二区三区| 偷拍一区二区三区| 久久视频在线播放| 亚洲xxxx在线| 国产精品99久久免费黑人人妻| 午夜时刻免费入口| 午夜精品久久久久久久99老熟妇| 2020国产精品自拍| 日韩欧美成人激情| 国产精品一区二区三区免费视频| 不卡中文字幕在线| 久久人人爽人人爽人人片| 亚洲视频一区在线播放| 久久麻豆一区二区| 亚洲免费精彩视频| 国产九色精品| 极品人妻一区二区三区| 婷婷在线免费观看| 色狠狠桃花综合| 51国产成人精品午夜福中文下载 | 国产亚洲精品综合一区91|