Golang call C

题记:是否输出居然和是否和行尾换行有关系

代码:

why? …

因为printf是行缓冲的,不看到换行就不输出,可以在printf后面刷新标准输出:

另,在C的printf后面使用Go的fmt.Println(“^_^”)来输出一些东西,是不是就可以把C要打印的东西给输出来了呢?

代码如下:

结果发现,End 输出了,Hello world还是没输出。

原因:C的输出buffer和Go的不是一个

思考:

亲,你见过用C写的一个Hello world程序是必须有换行的吗?如下:

呃,这个确实没问题,why? C在退出的时候刷新输出缓冲了呗

说明:

To access a symbol originating from the C side, use the package name C. That is, if you want to call the C function printf() from Go code, you write C.printf(). Since variable argument methods like printf aren’t supported yet (issue 975)

翻译:如果你想调用C中的printf,那就是 C.printf(). 但是,向pringf这种可变参数个数的函数穿残还没有被支持,所以还不能直接写C.printf(). 只好自己包一下了

 

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据