Skip to content

cgo调用c函数时,调用栈发生了什么? #4

Open
@xpzouying

Description

@xpzouying

cgo调用c函数时,调用栈发生了什么?

参考源码:源码

前言

分别有2个程序,完成相似的功能,其中一个是纯Go函数,另外一个是Go调用C函数,对于函数调用栈有什么区别?

1、cgo程序

package main

/*
int sum(int a, int b) { return a+b; }
*/
import "C"

func main() {
	a, b := C.int(1), C.int(2)
	C.sum(a, b)
}

2、Go程序

package main

//go:noinline
func sum(a, b int) int {
	return a + b
}

func main() {
	a, b := 1, 2
	sum(a, b)
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions