为了账号安全,请及时绑定邮箱和手机立即绑定

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 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信