当从 C 调用一个 go 程序时,它是编译的还是解释的?

When a go program is called from C, is it compiled or interpreted?

我做了一个C程序。我制作了一个定义了 go 函数的 go 文件。 在 C 程序中,我调用了 go 函数。 go 是从 C 编译还是解释调用的?

它总是被编译。如果没有编译,C 永远不会 运行 函数。

在您的程序中,当您第一次调用 go 函数时,编译器将生成函数调用所需的代码,space 函数参数,存储有关函数参数类型的详细信息等。 如果按照编译器标准一切都是正确的,则会创建目标文件,并且还会有其他过程,如链接和所有过程。 所以基本上你不能说它是“Is go called from C compiled or interpretted?”,它是一系列的过程,它们一起工作使你的程序 运行.

I made a C program. And I made a go file with go functions defined. In the C program, I called go functions

你编写了一个调用 C 函数的 Go 程序(反过来还不可能。)然后你显然又从 C 调用了 Go 函数,这有点奇怪,而且大多数情况下没有多大意义时间。参见 。

我假设您使用 gccgo 来编译您的程序。因为如果你使用 Go 的 gc 那么你的程序是用什么语言编写的就不会有任何混淆。

Is go called from C compiled or interpretted?

已编译。 gccgo 是 GCC 的 Go 前端。而 GCC 代表 GNU Compiler Collection.