6

Birkaç sistemde çifte uzun çift ile aynıdır. Uzun çiftin, derleme süresinden iki katına kadar uzatılmış hassasiyet olup olmadığını nasıl algılayabilir ve koşullu derleme için kullanabilirim.Uzun çifte uzatılmış hassasiyet olup olmadığını veya derleme zamanında olmadığını belirleme

Ben SIZEOF_DOUBLE ve SIZEOF_LONG_DOUBLE libgcc mevcut önceden tanımlanmış makrolar vardır ama farklı toolchain genelinde taşınabilir bulunmamaktadır görüyoruz.

Bunu yapmanın C yolu var mı?

+0

Sizeof (double)> 8' deneyebilirsiniz. Her ne kadar taşınabilir olmasa da, muhtemelen çoğu durumda işe yarayacaktır. – Mysticial

+0

"Sizeof (double)

+2

Önişlemci 'sizeof' tanımıyor. –

cevap

5

ve LDBL_MANT_DIG, float.h'dan karşılaştırabilirsiniz.

1

Örn. float.h

0

(birçok projelerde kullandığı gibi) bu soruna "doğru" çözüm tanımlanan

#if DBL_MANT_DIG < LDBL_MANT_DIG 

veya benzeri değerler yapılandırmak komut dosyası oluşturmaktır.

Yapılandırma komut dosyası, derleyiciyi ve sistem özelliklerini belirlemek için küçük programlar derleyip çalıştırmayı içeren çeşitli sınamaları çalıştırır. Komut, daha sonra, bulguları bir başlık dosyası veya makefile veya her ikisini de yazar. Elbette, senin istediğin her şeyi yapabilirsin.

Bu tür bir şeyi yarı otomatik olarak yapmak için bazı araçlar vardır, ancak muhtemelen sizin için fazladır. Bir göz atmak isterseniz, isimler autoconf ve automake. Dikkatli olun, öğrenmesi kolay değil, ancak, unix tarzı bir kabuk ve GNU yapısına sahip olduğu sürece hemen hemen her platformda çalışması gereken komut dosyalarını ve maketleri üretiyorlar.

İlgili konular