C++ için preprocessor commands. İşin olayı şu SOYUTLAMA. Mesela OpenGL de çizgi çiz diye bir fonksiyon var, DirectX dede aynı karşılığı var ama kullanımları farklı. Adamlar yle bir fonksiyon yazıyor ki, cizgiCiz diye. windows da ise directx in komutlarını, linuxde ise opengl 3 komutlarını, mobildeyse opengl ES komutlarını, xboxda ise directx i kullanıyor... Diğer taraftan ortak kod kullanmak gerek. Standartları bilmek burada çok nemli.. http://stackoverflow.com/questions/33238345/are-c-applications-cross-platform Bir rnek: ifdef _WIN32 //define something for Windows (32-bit and 64-bit, this part is common) #ifdef _WIN64 //define something for Windows (64-bit only) #endif #elif APPLE #include "TargetConditionals. h" #if TARGET_IPHONE_SIMULATOR // iOS Simulator #elif TARGET_OS_IPHONE // iOS device #elif TARGET_OS_MAC // Other kinds of Mac OS #else # error "Unknown Apple platform" #endif #elif linux // linux #elif unix // all unices not caught above // Unix #elif defined // POSIX #else # error "Unknown compiler" #endif DrKill tarafından 21/Şub/16 19:37 tarihinde düzenlenmiştir Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

Platformlar arası taşınabilirlik nasıl sağlanıyor? Alt katmanda her platform için ayrı katmanlar yazılıp daha sonra bir üst katmanda bu farklılıklar saklanıyor mu? Konuyu anlatabilmem için GTA5 rneğini vereyim. PS3, PS4, Windows, XBOX üzerinde çalışıyor bildiğimiz gibi. Bu oyunda kullanılan motorda RAGE. Şimdi bu RAGE motoru yazılırken her platform için farklı katmanlar mı var? Windows için win apilerini kullanan bir katman, ps3 için bu cihazın zel apileri, xbox için cihaza zel apiler kullanılıp daha sonra bir ek katmanla tüm bu farklılıklar kaldırılıyor mu? Bu konuda bilgisi olan mürid var mı? Araştırmam için anahtar kelimeler neler? Konu C/C++ ile ilgili olduğu için buraya açtım. SkynetX tarafından 21/Şub/16 16:03 tarihinde düzenlenmiştir

Anladım. Sonuçta her platform için illa bir katman yazılacak. Teşekkür ediyorum.

Standartlar var. rneğin C'deki printf işlevi her platformda aynı işi yapar, aynı parametrelerle çalışır çünkü standartta belirtilmiştir. Grevi standart çıkışa biçimlendirilmiş şekilde karakter katarı gndermektir. Bu şu demek, X platformunda standart çıkış ekrana gnderirken y'de ise bir dosyaya yazabilir çünkü y'nin ekran gibi bir birimi yoktur. Zaten konsol olayı hep burada karıştırılır. printf denince biz ekrana yazı yaz anlarız ama aslında ekran C için bir akıştan daha fazlası değildir. Zaten C ekranın ne olduğunu bilmez. Bizim terminal emülatrleri stdout'u kendine ynlendirir ve gsterir. Kısa bir deyişle: Standarda uyan ve platforma zgü hiçbir yeteneği kullanmayan kod parçacığı, standarda uyan derleyici ile her zaman derlenir. Bir gui toolkiti ele alalım. Toolkit'in arayüzü standartlaştırılmış olsun. Bu gui alt seviye işlemleri Windows'ta winapi kullanarak , Linux ve Unix'te ise X sunucusunu kullanarak gerçekleştirir. Programcı alt seviye işlemlerin nasıl gerçekleştiği ile ilgilenmez sadece gui'nin kendi sunduğu olanakları bilse yeterlidir. Sizin durumda şyle gerçekleşmiştir: Oyun motorunun arayüzü bellidir . G/Ç işlemleri için motorun alt seviye parçacıkları platforma zgü yazılır. Oyun hangi platformda derlenecekse o platformun derleyicisi çalıştırılarak amaç program üretilir. Olaylara karışmayın!