douke6857 2017-03-03 01:28
浏览 31
已采纳

Golang无法打印内部字符串

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条回答 默认 最新

  • dpafea04148 2017-03-03 01:37
    关注

    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.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图