2016-03-24 21 views
2

ben c kodu Cgo'ya bir dosya derlememesini nasıl söyleyebilirim? Düzenli go dosyası için

Yani ne yapmam gerekiyor

derleme yapabilmek için olarak ancak CGO bu yorumladığı

// +build !windows 

demek?

+0

sen CGO devre dışı bırakmak veya sadece bir dosya yok saymak istiyor musunuz? – JimB

+0

Anladığım kadarıyla, C kodu olarak adlandırılan dosyalar, gc veya gcc (flag by cgo) kullanılarak gc kullanılarak derlenir, bu yüzden en iyi bahsinizin gc'ye bir dosyayı yoksaymasını nasıl söyleyeceğimi anlamaya çalıştığını düşünüyorum . – evanmcdonnal

+0

Hiç işlenmesini istemiyorum (go veya gcc) – pm100

cevap

6

Yapı kısıtlaması, paket bildiriminizden önce görünmelidir.

Yanlış

package mypackage 

// +build !windows 

// #include <header.h> 
// 
// ... 
import "C" 

Doğru

// +build !windows 

package mypackage 

// #include <header.h> 
// 
// ... 
import "C" 
+1

Bir kenara göre - hassas cgo'nun ne kadar boş satırlara geçtiğini anlayamıyorum. + Build line ve package arasındaki satırı özledim - yapı satırı yoksayıldı. Bir # cgo satırı ve "C" arasına bir satır ekleyin ve (#cgo) göz ardı edilir - OB0IOUS – pm100

+2

@ pm100 aslında, dokümantasyonda şu şekilde istatistikler: [Paket belgelerinden yapı kısıtlamalarını ayırt etmek için, bir dizi yapı kısıtlamaları boş bir satır takip etmelidir.] (https://golang.org/pkg/go/build/) – OneOfOne

+0

@OneOfOne, cgo bayrakları için kısıtlamalar olmadıkça - bu durumda boş bir satır olmamalıdır – pm100