में अधिक पैरामीटर पास करना मान लें कि मैं एक शतरंज प्रोग्राम बना रहा हूं। मेरे पास एक समारोह हैसी फ़ंक्शन पॉइंटर्स
void foreachMove(void (*action)(chess_move*), chess_game* game);
जो प्रत्येक मान्य चाल पर फ़ंक्शन पॉइंटर कार्रवाई को कॉल करेगा। यह सब ठीक है और अच्छा है, लेकिन अगर मुझे एक्शन फ़ंक्शन में अधिक पैरामीटर पास करने की आवश्यकता है तो क्या होगा? उदाहरण के लिए:
chess_move getNextMove(chess_game* game, int depth){
//for each valid move, determine how good the move is
foreachMove(moveHandler, game);
}
void moveHandler(chess_move* move){
//uh oh, now I need the variables "game" and "depth" from the above function
}
फ़ंक्शन पॉइंटर को फिर से परिभाषित करना इष्टतम समाधान नहीं है। ForeachMove फ़ंक्शन बहुमुखी है और कोड संदर्भ में कई अलग-अलग स्थान हैं। उन संदर्भों में से प्रत्येक के लिए उनके फ़ंक्शन को अपडेट करने के लिए यह समझ में नहीं आता है कि उन पैरामीटर को शामिल करने के लिए जिन्हें उनकी आवश्यकता नहीं है।
मैं एक ऐसे फ़ंक्शन पर अतिरिक्त पैरामीटर कैसे पास कर सकता हूं जिसे मैं पॉइंटर के माध्यम से कॉल कर रहा हूं?