Taşınabilir bir C++ uygulaması yazıyorum. Çalıştığı işletim sistemine bağlı olarak farklı başlıkları nasıl ekleyebilirim. Bunu C++ 'da yapmanın bir yolu var mı yoksa yapı sistemini kullanmak zorunda mıyım? Önişlemci ileİşletim sistemime göre farklı başlıkları nasıl ekleyebilirim?
cevap
:
Biz Linux (Red Hat Enterprise 5), Sun (Solaris) ve Windows üzerinde geliştirmek#ifdef _SUNOS
//code
#elseif _LINUX
//code
#elseif _HPUX
//code
#elseif _WIN32
//code
#else
#error OS not supported
#endif
İşte bir [önceden tanımlanmış makrolar listesi] (http://predef.sourceforge.net/preos.html). – roshanvid
@ c0smikdebris: teşekkür ederim :) – BlackBear
_WIN32'nin hem 32 bit hem de 64 bit Windows'ta tanımlandığını unutmayın. – user763305
.
#ifndef MSWINDOWS
#include <unistd.h>
#else
#include <winbase.h>
#endif
//More includes here
Ben önişlemci direktifleri ve çapraz platform inşa sistemi gibi CMake kullanırsınız: Sistemimiz böyle bir şey kullanmaktır. Sen yapabilirdi: -DLINUX
:
#ifdef LINUX
#include <unistd.h>
#elif defined(WINDOWS)
#include <algorithm.h>
# elif Defined(MAC_OSX)
//... etc.
#else
#error No operating system defined
#endif
Sonra gibi bir yapı için gelen önişlemci bayrağı ekleyin.
Bence bu iyi bir fikir. Son zamanlarda derleyicilerin kullandığı tanımları kullanarak bunu yapmaya çalıştı ama ben vazgeçtim, çok fazla varyasyon var ve değil. Yapı sistemiyle belirlenen kendi tanımımı kullanmanın daha kolay olduğunu keşfettim. – Skurmedel
- 1. Radyo butonu ve VBO (toplu işleme işletim) modülünü nasıl ekleyebilirim?
- 2. Çoklu dil başlıkları nasıl ayarlanır
- 3. ASP.NET'teki hesaba farklı öznitelikleri nasıl ekleyebilirim?
- 4. İşletim sistemi oluşturmaya dayalı farklı dosyaları dağıtma
- 5. R yardım dosyaları farklı işletim sistemlerinde
- 6. Aynı verileri onay kutusuna göre farklı tablolara nasıl ekleyebilirim? MySQL php
- 7. Başlıkları
- 8. İşletim sistemleri nasıl ayıklar?
- 9. Matrisleri liste isimlerine göre liste içinde nasıl topluca ekleyebilirim?
- 10. UITableView saydam bölüm başlıkları ve farklı renkli bölüm arka
- 11. , aşağıdaki metne bakılmaksızın başlıkları aynı taban çizgisine göre hizalar mı?
- 12. Gömülü UITabBar alt görünümleri için farklı UINavigationController başlıkları mı ayarlıyorsunuz?
- 13. LINQ - Değere göre farklı mı?
- 14. HTTP Başlıkları
- 15. PHP'de işletim sistemi kodlaması nasıl algılanır?
- 16. başlıkları tepki
- 17. PDF için farklı bir Git diff aracı nasıl ekleyebilirim?
- 18. Adobe AIR ve farklı işletim sistemi dosya sistemleri
- 19. Bir make dosyasında işletim sistemi nasıl algılanır?
- 20. Bir PyCharm projesini çoklu işletim sistemlerinde paylaşın (farklı yorumlayıcı yollar)
- 21. angularjs başlıkları nasıl değiştirilir? $ Http.jsonp
- 22. sahip Nasıl Jersey hatalı biçimlendirilmiş başlıkları
- 23. Android ListeSektör Başlıkları
- 24. Farklı görünümü gösterme Veritabanındaki bilgilere göre RecyclerViewView?
- 25. COM bağlantı noktası yok/dev/tty * - farklı işletim sistemlerinde denenmiş, farklı kablolar
- 26. oluşturma Multirow tablo başlıkları
- 27. jQuery - işletim sistemi ve işletim sistemi sürümünün algılanması
- 28. Sütun Başlıkları aşağıdaki kolonlar başlıkları içeren bir tablo ve bir satır örneği var
- 29. seti HTTP başlıkları
- 30. NHibernate sorgusunda farklı tabloya göre ayar değeri
İşte oldu. Bana hatırlattığın için teşekkürler. – roshanvid
Rica ederim. Ama * lütfen * bunu yapı sisteminde yapın, yazılımınızı daha iyi korunabilir hale getirecektir. Modüller platformdan bağımsız bir şekilde yazılmazsa (genellikle Boost veya Qt gibi kütüphanelerle olabilirler), OS özümleri üzerinde kendi soyutlamalarınızı tasarlayabilir ve bunları birkaç kez uygulayabilirler. –
Tüm iyi cevaplar. Maalesef, açık olduğunu söylüyordum, ancak genellikle platformlar olan üstbilgileri ve kitaplıkları tercih etmenin iyi bir fikir olduğunu aklımda tutarım. [C++ Standart Kütüphanesi] (http://en.wikipedia.org/wiki/C%2B%2B_standard_library) ihtiyacınız olan her şeye sahip olduğunda, neden bir alternatif seçeceğinizi kendinize sorun. –