Eğer yapabiliyorsanız ayrıca bkz ayrı çeviri birimleri. Bu daha temiz & okunabilir kod sağlar ve geliştirmek ve korumak için daha kolay olacaktır. IMHO, yapım süreci hangi platform özel modüllerinin dahil edileceğini belirlemelidir.
rectangle.hpp: Şimdi
struct Rectangle
{
void draw(int upper_left_corner_x, int upper_left_corner_y,
unsigned int length, unsigned int width);
}
platforma özel dosyalar:
rectangle_wx_widgets.cpp:
#include "rectangle.hpp"
void
Rectangle ::
draw(int upper_left_corner_x, int upper_left_corner_y,
unsigned int length, unsigned int width)
{
// wxWidgets specific code here.
}
rectangle_qt.cpp:
Örneğin
#include "rectangle.hpp"
void
Rectangle ::
draw(int upper_left_corner_x, int upper_left_corner_y,
unsigned int length, unsigned int width)
{
// QT specific code here.
}
main.cpp:
#include "rectangl.hpp"
int main(void)
{
Rectangle r;
r.draw(50, 50, 10, 5);
return 0;
}
Yukarıdaki kod koşullu önişlemci direktifleri vardır. main
işlevi, platformdan bağımsız olarak bir dikdörtgen çizer. Platformun özellikleri, önemli olmadıkları için main
'dan kaldırılmıştır. Yani, herhangi bir derleyici anahtarını değiştirmeden veya hangi önişlemci tanımlayıcısının tanımlandığından endişe etmeden, main
koşulsuz olarak bir dikdörtgen çizdiğini görebilirsiniz.
Bir wxWidgets platformu kullanarak çizmek için, oluşturma işlemi rectangle_wx_widgets.cpp
'u kullanır. QT kullanarak çizim yapmak için rectangle_qt.cpp
dosyası kullanılır, ancak her ikisi de kullanılamaz. Bu resimde gösterildiği gibi, her iki platform için de kod üretmek için hiçbir kod değiştirilmez.Biri, oluşturma işlemini uyarlayabilir, böylece build wxWidgets
komutu, uygun çeviri birimlerini içerecektir. Böylece bir parametrenin yapıya geçirilmesi işlemi, platforma özgü yürütülebilir dosyayı oluşturur.
değil WxWidgets yapın ve SDL aradığınız önişlemci örnekler sunmak? –
(+1) Soru başlığı ile temsil edilen kavram, bir kazanım anlamına gelir. Eğer ikiden fazla destekleyebilir böylece başkaları geliştiriciler cevapları ... – umlcat