Golang无法打印内部字符串。

huangapple go评论79阅读模式
英文:

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 &lt;stdio.h&gt;                                                                                                                                        
 // #include &lt;stdlib.h&gt;                                                                                                                                       
 /*                                                                                                                                                           
 void print() {                                                                                                                                               
     printf(&quot;just for test&quot;);                                                                                                                                     
 }                                                                                                                                                            
 */                                                                                                                                                           
 import &quot;C&quot;                                                                                                                                                   
                                                                                                                                                              
 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(&quot;just for test&quot;);
    fflush(stdout);
}

Or flush stdout somewhere else if you don't want to do it every time for speed reasons.

huangapple
  • 本文由 发表于 2017年3月3日 09:28:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/42569037.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定