英文:
golang can not print inner string
问题
我想在一个C++项目中使用Go SDK。但是我遇到了一个问题,主要问题如下所示。我正在使用一个C函数运行一个Go程序,代码可以简化如下。
package main
// #include <stdio.h>
// #include <stdlib.h>
/*
void print() {
printf("just for test");
}
*/
import "C"
func main() {
C.print()
}
但是结果是没有任何输出。谁能告诉我问题出在哪里?非常感谢!
英文:
I want to usego sdk on a c++ project. But i am in a problem, the problem is mainly like this. I am running a go program using a c function, the code can be simplified to below.
package main
// #include <stdio.h>
// #include <stdlib.h>
/*
void print() {
printf("just for test");
}
*/
import "C"
func main() {
C.print()
}
But the result is none, there is no output. Who can tell what's the problem? Thanks very much!
答案1
得分: 0
C标准输入输出是有缓冲的,所以它不会立即产生输出。在C程序中,退出main函数或使用exit()函数会运行atexit处理程序,其中一个由运行时安装的处理程序会刷新stdout缓冲区。你可能需要这样做:
void print() {
printf("just for test");
fflush(stdout);
}
或者在其他地方刷新stdout,如果出于速度原因你不想每次都这样做。
英文:
C stdio is buffered, so it doesn't produce output right away. In a C program, exiting main or doing exit() runs atexit handlers, one of which installed by the runtime will flush the stdout buffer. You likely need to do:
void print() {
printf("just for test");
fflush(stdout);
}
Or flush stdout somewhere else if you don't want to do it every time for speed reasons.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论