2010-05-25 15 views
5

MyCQL ++ içerdiği ve bağlı olduğu XCode içinde bir proje derliyorum. Bu kapsamda cpool.h gelen"'assert' bu kapsamda açıklanmadı" MySQL ++ içinde

köken, ++ MySQL parçası olan bir başlık dosyası

'assert’ilan edilmedi: Nedense, ben şu derleyici hata almaya devam. Bunun neden tetiklendiğini bilen var mı?

DÜZENLEME: Referans olarak, MySQL ++ Macports üzerinden yüklenmiştir.

+0

Lütfen satır numaralarını içerdiğinden, eksiksiz hata iletisini gönderin. "Cpool.h", ASSERT'de nerede başarısız oluyor? –

+0

Assert, 78, numaralı sanalta başarısız oluyor. ~ ConnectionPool() {assert (empty()); } Ve evet, assert.h dahil ediliyor. – Anonymous

+0

Ayrıca, MySQL ++ Macports ile kuruldu. – Anonymous

cevap

6

En belirgin cevap, "assert.h" öğesinin dahil edilmemesi veya dahil etme yolunuzda bulunmamasıdır. Başka bir açıklama, üstbilginin eklendikten sonra bir noktada iddia edilen makronun tanımlanmamış olmasıdır.

Düzenleme: Bu assert.h'nin eklendiğini ve standart bir üstbilgi olduğundan bu yana bulunduğunu anlayacağımızı söylediğinizden, bu da yukarıda belirttiğim son olasılıkla, yani makroda olduğu anlamına gelir. tanımlanmamış.

cpool.h'nin kendisi bunu yapmayacağı için, assert.h'nin kendinizin ya da dolaylı olarak başka bir üçüncü taraf üstbilgisi tarafından daha önce yer alması ve bu ile cpool.h'nin dahil edilmemesi arasındaki belirsizliğin gerçekleşmesi gerekir. Bu, cpool.h dosyanızı dosyanızın üstüne taşıyarak kolayca test edilebilir.

+0

Dosya şu adresten proxy tarafından dahil ediliyor: #include . Bunu dosyanın en üstüne taşıdım ama yine de bu hataları alıyorum. – Anonymous

+0

@Anonymous: Mysql ++ .h başlık içeren bir dosya mı? – Troubadour

+0

Evet, ancak doğru .cpp dosyası taşımak hala aynı hatayı veriyor. – Anonymous

2

Dahil etme yolunuzdaki başka bir kitaplık farklı bir "assert.h" dosyasına sahip olabilir ve bilmeden sistem standardı olan <assert.h>'u dahil edebilirsiniz.

Mac OSX'te gstreamer kullanan bir uygulama yazarken bu soruna rastladım. Bu gstreamer'ın dizin içerir (/Library/Frameworks/GStreamer.framework/Headers) standart olmayan ve gerçek assert.h için uygun olmayan bir yedek olan "assert.h" bir dosya içerir. Derleme komutuma -I/Library/Frameworks/GStreamer.frameworks/Headers eklediğimde, birdenbire gsreamer sürümünün dahil olduğu "#include <assert.h>" ifadesini ekledim. Bu benim derlememde aldığınız aynı hatayla başarısızlığa neden oldu.

2

C++ ekleyerek cassert üstbilgisi sorununuzu gidermelidir.

#include <cassert>