आप कर सकते हैं, तो में मंच विशिष्ट विधियों डाल करने के लिए पसंद करते हैं अलग अनुवाद इकाइयों। इससे क्लीनर & अधिक पठनीय कोड और विकसित और बनाए रखने में आसान हो जाएगा। आईएमएचओ, निर्माण प्रक्रिया को निर्धारित करना चाहिए कि कौन सा मंच विशिष्ट मॉड्यूल शामिल करना है।
उदाहरण के लिए:
rectangle.hpp:
struct Rectangle
{
void draw(int upper_left_corner_x, int upper_left_corner_y,
unsigned int length, unsigned int width);
}
अब मंच विशिष्ट फ़ाइलों:
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:
#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;
}
ऊपर कोड कोई सशर्त पूर्वप्रक्रमक निर्देशों है। main
फ़ंक्शन प्लेटफ़ॉर्म पर ध्यान दिए बिना एक आयताकार खींचता है। प्लेटफ़ॉर्म के विनिर्देश main
से हटा दिए गए हैं क्योंकि वे महत्वपूर्ण नहीं हैं। तो, किसी भी कंपाइलर स्विच को बदलने के बिना या प्रीप्रोसेसर पहचानकर्ता को परिभाषित करने के बारे में चिंता करने के बिना, कोई देख सकता है कि main
बिना शर्त आयताकार खींचता है।
WxWidgets प्लेटफ़ॉर्म का उपयोग करने के लिए, निर्माण प्रक्रिया rectangle_wx_widgets.cpp
का उपयोग करेगी। क्यूटी का उपयोग करने के लिए, rectangle_qt.cpp
फ़ाइल का उपयोग किया जाएगा, लेकिन दोनों नहीं। चूंकि यह चित्र दिखाता है, किसी भी मंच के लिए कोड तैयार करने के लिए कोई कोड नहीं बदला जाता है।कोई बिल्ड प्रक्रिया को तैयार कर सकता है ताकि build wxWidgets
कमांड में उचित अनुवाद इकाइयां शामिल हों। इस प्रकार निर्माण प्रक्रिया में पैरामीटर पास करने से मंच विशिष्ट निष्पादन योग्य उत्पन्न होता है।
WxWidgets और SDL प्रीप्रोसेसर उदाहरण प्रदान नहीं करते हैं जिन्हें आप ढूंढ रहे हैं? –
(+1) प्रश्न शीर्षक द्वारा प्रस्तुत अवधारणा, एक अपवर्तनीय मूल्यवान है। उत्तर नहीं है, अन्य डेवलपर्स के जवाब पढ़ रहे हैं ... – umlcat