婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 在Golang中使用C語言代碼實例

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

熱門標簽:外呼系統多少錢一年 旅游廁所如何電子地圖標注 海外照相館地圖標注入駐 滁州自建外呼系統 客服級電銷機器人 外呼系統如何接收服務密碼 智能營銷軟件 工商信用卡外呼系統教程 經常接到推銷電話機器人的電話

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

Hello World

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

復制代碼 代碼如下:

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

執行程序:
復制代碼 代碼如下:

go run main.go

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

Windows 下的準備工作

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

設置編譯和鏈接標志

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

1.編譯器和鏈接器標志
2.C 代碼

我們可以通過 #cgo 指令來設置編譯器和鏈接器標志,例如:

復制代碼 代碼如下:

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

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

常用的 #cgo 指令有:

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

Golang 引用 C

結構體上需要注意的點:

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

標準的 C 數值類型對應:

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 函數(包括 void 函數)都可以返回一個返回值和 C 的 errno 變量(作為錯誤):

復制代碼 代碼如下:

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

直接調用 C 函數指針目前還無法支持。

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

復制代碼 代碼如下:

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

其他需要注意的點:

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

您可能感興趣的文章:
  • C語言和go語言之間的交互操作方法
  • Go語言中嵌入C語言的方法
  • Go語言中CGO的使用實踐

標簽:九江 深圳 運城 喀什 湘潭 楚雄 晉城 本溪

巨人網絡通訊聲明:本文標題《在Golang中使用C語言代碼實例》,本文關鍵詞  在,Golang,中,使用,語言,代碼,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在Golang中使用C語言代碼實例》相關的同類信息!
  • 本頁收集關于在Golang中使用C語言代碼實例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    一区二区成人在线观看| 国内精品久久久久影院色| 高清在线不卡av| 一区二区三区自拍| 久久影院视频免费| 日韩视频免费直播| 欧美午夜精品一区二区三区| 国产一区二区三区视频在线播放| 一区二区三区在线看| 国产精品三级av| 国产欧美日韩精品a在线观看| 777久久久精品| 欧美午夜精品理论片a级按摩| 国产成人午夜精品影院观看视频| 日韩高清中文字幕一区| 91传媒视频在线播放| 精品福利二区三区| eeuss鲁片一区二区三区在线看| 亚洲乱码国产乱码精品精可以看 | 经典一区二区三区| 成人午夜在线播放| 久久久久久一二三区| 日日噜噜夜夜狠狠视频欧美人| 91视频观看免费| 亚洲色图视频免费播放| 99麻豆久久久国产精品免费| 亚洲国产一区视频| 中文字幕欧美国产| 欧美国产日本视频| 日韩欧美的一区二区| 色综合天天天天做夜夜夜夜做| 欧美tk—视频vk| 国产欧美一区二区三区鸳鸯浴 | 欧美剧情电影在线观看完整版免费励志电影 | 欧美色图12p| 爽好多水快深点欧美视频| 久久久久久久久伊人| 99久久精品国产导航| 无吗不卡中文字幕| 天使萌一区二区三区免费观看| 91原创在线视频| 肉丝袜脚交视频一区二区| 日韩欧美国产小视频| 国产一区二区三区黄视频 | 日韩va欧美va亚洲va久久| 欧美精品99久久久**| 国产成人一区在线| 欧美本精品男人aⅴ天堂| 青青草97国产精品免费观看| 成人综合在线观看| 久久久久久久久久久久电影| 国产成人精品三级| 日韩成人av影视| 国产精品伦理一区二区| 一区二区三区欧美日韩| 久久精品国产一区二区三| 成人精品视频一区| 欧美一区二区三区色| ...av二区三区久久精品| 日av在线不卡| 91同城在线观看| 91精品午夜视频| 美女视频一区二区| 中文字幕亚洲不卡| 日韩理论片网站| 亚洲日本青草视频在线怡红院| 国产精品嫩草影院av蜜臀| 国产欧美日韩综合精品一区二区| 精品蜜桃在线看| 2023国产精品| 一本色道久久综合亚洲91| 色国产精品一区在线观看| 久久亚洲春色中文字幕久久久| 亚洲午夜成aⅴ人片| 丁香桃色午夜亚洲一区二区三区| 51精品国自产在线| 亚洲视频在线一区| 成人精品视频一区二区三区| 久久婷婷色综合| 久久不见久久见中文字幕免费| 欧美视频在线观看一区| 日韩一区在线免费观看| 国产高清无密码一区二区三区| 91精品国产乱| 欧美精品一二三四| 99久久国产综合精品色伊| 欧美日精品一区视频| 欧美成人三级电影在线| 中文字幕av一区二区三区免费看| 亚洲欧美激情插| 国产精品午夜免费| 午夜精品久久久久久久久| 国产一区二区三区最好精华液| 99久久国产综合精品色伊| 欧美电影在哪看比较好| 国产亚洲人成网站| 亚洲成va人在线观看| 精品一区二区三区欧美| 99精品久久99久久久久| 欧美变态tickling挠脚心| 亚洲激情一二三区| 国内不卡的二区三区中文字幕 | 欧美精品久久久久久久久老牛影院| 久久综合九色综合欧美就去吻| 欧美性猛交一区二区三区精品| 蜜桃av一区二区三区| 91免费视频网| 国产高清在线精品| 国产精品一区免费在线观看| 精品中文av资源站在线观看| 欧美视频中文一区二区三区在线观看| 欧美高清www午色夜在线视频| 五月激情六月综合| 日韩欧美的一区| 日本一区二区动态图| 欧美日韩在线免费视频| 国产欧美一区二区精品性| 成人免费观看av| 亚洲欧美乱综合| 欧美丝袜丝交足nylons图片| 日本欧美肥老太交大片| 国产亚洲美州欧州综合国| 国产在线不卡视频| 亚洲精品国产无天堂网2021| 欧美一区二区三区免费| 国产99久久久国产精品潘金| 亚洲综合久久久| 久久久久久电影| 91蝌蚪porny九色| 久久精品久久综合| 日韩码欧中文字| 欧美日韩极品在线观看一区| 国产精品羞羞答答xxdd| 亚洲精品久久久久久国产精华液| 欧美一区二区日韩| 99综合影院在线| 开心九九激情九九欧美日韩精美视频电影| 中国色在线观看另类| 欧美日本在线一区| 不卡一卡二卡三乱码免费网站| 午夜伦理一区二区| 欧美国产精品中文字幕| 538prom精品视频线放| 99国产欧美久久久精品| 免费视频一区二区| 亚洲狼人国产精品| 久久日一线二线三线suv| 在线观看免费一区| av中文字幕不卡| 韩国一区二区三区| 琪琪一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 久久精品视频一区二区三区| 91精品欧美综合在线观看最新| 色综合激情久久| 成人开心网精品视频| 国产一区二区三区香蕉| 日本怡春院一区二区| 亚洲一区二区免费视频| 亚洲人123区| 久久美女高清视频| 不卡的电影网站| 图片区小说区区亚洲影院| 久久影音资源网| 国产精品三级av| 欧美自拍偷拍一区| 99视频有精品| 国产高清视频一区| 久久精品国产一区二区| 免费在线视频一区| 日本中文一区二区三区| 日韩精品亚洲专区| 亚洲制服欧美中文字幕中文字幕| 亚洲同性同志一二三专区| 国产精品午夜在线| 日韩一区有码在线| 亚洲欧美色一区| 夜夜嗨av一区二区三区四季av| 亚洲精品视频观看| 日韩美女精品在线| 一区二区三区欧美久久| 一区二区三区资源| 偷拍一区二区三区| 美国毛片一区二区| 国产在线国偷精品免费看| 国产九色sp调教91| 95精品视频在线| 99久久国产综合精品色伊| 久久99久久99精品免视看婷婷 | 国产综合色在线| 亚洲国产精品一区二区久久恐怖片| 久久久久久久性| 日韩视频免费观看高清完整版 | 欧美大尺度电影在线| 在线视频一区二区三| av一区二区不卡| 国产91精品精华液一区二区三区| 美女高潮久久久| 免费观看日韩电影| 五月婷婷综合网|