亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang中c語言函數執行順序

golang中c語言函數執行順序

Go
慕工程0101907 2023-06-01 15:07:05
我正在研究golang,但是有一部分用c語言是不懂的。main中是第二次執行c語言函數,不同的IDE輸出結果不同。為什么會打印出來?package main//#include<stdio.h>//void callC() {// printf("Calling C code!\n");//}import "C"import "fmt"func main() {    fmt.Println("A Go statement")    C.callC()    fmt.Println("Another Go statement")}--在 GoLand 中(模板:go build with Run after build option) --輸出)一個 Go 語句另一個 Go 語句調用 C 代碼!--在終端$ go run hello.go一條 Go 語句調用 C 代碼!另一個 Go 語句
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

Cprintf是在 libc 中實現的,使用較低級別的系統調用。libc 具有用于 I/O 的緩沖區以提高性能,并且它決定何時刷新這些緩沖區(特別是對printf發出的標準輸出流進行緩沖)。

Go 有自己的printf低級系統調用,它printf根本不使用 C 或 libc。因此,它的沖洗決定與 C 的決定是分開的printf。

所以這里沒有問題,真的。printf不保證無緩沖輸出(如有必要,您可以使用錯誤流顯式刷新),因此無法保證 C 和 Go 版本之間的順序。


查看完整回答
反對 回復 2023-06-01
  • 1 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號