2009-06-09 16 views
6

Birden çok platformda ve derleyicide çalışan C/C++ kodlarının yazılmasına yardımcı olmak için hangi kaynaklar var? Örneğin, düzenli olarak kendim gibi soruları soruyorum:Çapraz platformlar için kaynaklar C/C++ geliştirme

  • Çeşitli derleyiciler ve ortamlarda hangi önişlemci makroları otomatik olarak tanımlanır? (Örn __GCC__, WIN32, __WIN32__, __CYGWIN__) derleyici ve standart kütüphanelerin versiyonları nispeten yeni "standart" fonksiyonlarını destekleyen
  • (örneğin C99 uzun çift trigonometrik fonksiyonlar sinl(), COSL(), ...)
  • Tek bir taşınabilir işlev yokken, tipik görevleri gerçekleştirmek için farklı platformlarda hangi işlevler kullanılabilir?

sık sık Linux altında/cygwin gcc, mingw32, ve Visual Studio derleme kod yazmak (mesela alt ikinci hassasiyetle geçerli zamanı alma) ve sık sık birçok kaynaktan gelen notları karşılaştırmak zorunda (Linux İhtiyacım olan bilgileri almak için man sayfaları, MSDN, derleyici docs). Bu, geliştiricilerin her zaman karşılaştıkları bir problem olmalı - bu bilgiyi kolayca sindirilebilir bir referansa dönüştüren herhangi bir kaynak var mı?

(I WxWidgets gibi platformlar arası kütüphanelerde özellikle ilgilenmiyorum veya artırmak bu soru için. Biri kendi çapraz platform kütüphane veya programı yardım edeceğini duyurdu kaynakları veya teknikler daha çok ilgileniyorum.)

DÜZENLEME: Bu, aradığım sayfa türünün bir örneğidir: http://predef.sourceforge.net/precomp.html. Çeşitli derleyiciler/ortamlar ve bunları tanımlamak için kullanılabilecek önişlemci makroları hakkında güzel bir anket. Ortak bir işlev olmadığında, Linux'ta gmtime_r() veya ftime(), vs vs _gmtime_s() veya _ftime() gibi platformlarda neredeyse eşdeğer işlevleri karşılaştıran benzer bir kaynak bulmak harika olurdu.

+0

? Üzüm gibi tadı olan bir şey sormak gibidir ama hepsi "grapie" değildir. – Kieveli

cevap

1

Platformlar arası kod yazmanın temel yolu, belirli platformlara bağlı olmayan kod yazmaktır. Örneğin, hemen hemen tüm orijinal UNIX yardımcı programları, belirli bir platforma atıfta bulunmaksızın yazılabilir. Koşullu derleme kullanarak belirli makrolara bağlı kod yazılması en iyi uygulama değildir.

+0

Prensip olarak kabul ediyorum ve mümkün olduğunda bunu yapıyorum, ancak bazı alt düzey görevler için platformlar arasında ortak bir işlev olmadığı pek çok durum var. Örneğin, sistem süresini milisaniye hassasiyetine getirmek istiyorsanız, Linux'ta ftime() kullanabilirsiniz, ancak Windows'da buna _ftime() adı verilir.Başka bir örnek olarak, bir Linux yapısında varsayılan yapılandırma yolunuzun ~/.myprogram olarak ayarlanmasını isteyebilirsiniz; Windows'da ise% APPDATA% \ MyProgram olmalıdır. –

1

Bu gerçekten somut projeye bağlı, ama ben mümkünse ISO uyumlu kod ve POSIX'e

  • sopa çalışacaktı;
  • - Tüm uyarıları atmak ve kaldırmak;
  • Otoonf ve ototoolset'i yardım edip edemeyeceğini kontrol edin.
İlgili konular