2017-03-03 308 views
-3

我想在C++項目中使用sdk。但是我遇到了問題,問題主要是這樣的。我使用c函數運行go程序,代碼可以簡化爲下面的代碼。golang無法打印內部字符串

包主要

// #include <stdio.h>                                   
// #include <stdlib.h>                                  
/*                                       
void print() {                                    
    printf("just for test");                                  
}                                        
*/                                       
import "C"                                     

func main() {                                     
    C.print()                                     
} 

但結果是沒有,沒有輸出。誰能告訴問題是什麼?非常感謝!

+0

請勿垃圾標籤。 C是完全不相關的語言。 – Olaf

+0

我明白了-_-,謝謝 –

回答

0

C stdio被緩衝,所以它不會立即產生輸出。在一個C程序中,退出main或執行exit()會運行atexit處理程序,運行時安裝的其中一個處理程序將刷新stdout緩衝區。你可能需要做的:

void print() { 
    printf("just for test"); 
    fflush(stdout); 
} 

或沖洗,標準輸出別的地方,如果你不想要的速度的原因,每次做這件事。

+0

,所以golang退出時不會刷新stdio緩衝區? –

+0

相當肯定這是真的。 –