У меня есть следующий простой тестовый код Go: call_c.go
package main
/*
int getData(int *p, int n)
{
int i;
for(i=0;i<n;i++) {
p[i]=i;
}
return n;
}
*/
import "C"
import "fmt"
func main() {
var a [5]int32
i := C.getData((*C.int)(&a[0]), 5)
fmt.Println(i, a)
}
Я использую «идти строить call_c.go», чтобы построить программу и строит отлично.Вызов функции c, порядок «импорт fmt», «импорт C» вызывает ошибку сборки, почему?
Но я обнаружил, что если я просто изменил порядок «import fmt», «import C» или добавил новую строку между C/* */block code и первым импортером, «go build call_c.go "команда возвращает ошибку:
go build call_c.go
37: error: 'getData' undeclared (first use in this function)
Вопросы для экспертов сусликов там:
Почему порядок импорта важно в ходу?
Почему я не могу добавить пробел между блоком C и первым оператором импорта?
Если я снова вижу такую ошибку, как лучше ее отладить?
Хороший ответ! Это первый раз, когда я ввожу язык, где новая строка может вызвать ошибку компиляции. Теперь я знаю, почему. Еще раз спасибо. –