प्रोग्रामिंग रूटीन को उचित संरचना में कॉल करना…


मेरे पास एक प्रश्न है जो आपको परेशान कर सकता है, लेकिन साथ ही यह मुझे शर्मिंदा भी कर सकता है, लेकिन यहाँ जाता है।

आइए कुछ प्रोग्रामिंग उदाहरण देखें जिनके साथ पहले काम करना है:

“सी” दिनचर्या की घोषणा
int RetIntDayNum(char * datestrg, int * intdaynum, int * iostat);

वास्तविक सरल “सी” दिनचर्या की घोषणा करना।
int RetIntDayNum(char * datestrg, int * intdaynum, int * iostat) {
////



वापसी(1);
}

“सी” कॉल की घोषणा: रूटीन 1।
iretv = RetIntDayNum(cdatestring, &idaynum, &iostat);

“सी” कॉल की घोषणा: रूटीन 2।
iretv = RetIntDayNum(cdatestring, &idaynum);

ठीक है, सवाल ये है…
“सी” रूटीन को कॉल करने में, आपको “रूटीन 1” का उपयोग करना चाहिए। लेकिन अपने प्रोग्रामिंग प्रोजेक्ट को एक साथ रखने में, मुझे बाद में पता चला और
एहसास हुआ कि मैं “रूटीन 2” दृष्टिकोण का उपयोग कर रहा हूं, और हर बार मैंने इस कार्यक्रम को संकलित किया;
यह ठीक संकलित हुआ और ठीक चला।

वर्तमान में, मैं Windows 10 प्लेटफ़ॉर्म पर एंटरप्राइज़ MSVC 2019 वातावरण का उपयोग कर रहा हूँ।

मुझे पता है कि “रूटीन 1” का उपयोग करना काम करने का सही तरीका है, लेकिन “रूटीन 2” का उपयोग प्रोग्राम क्यों नहीं बनाता है
झटका?। क्यों। या क्या यह एक प्रतीक्षारत विस्फोट है जो घटित होने को तैयार है?
फिलहाल, मुझे इस बड़े कार्यक्रम में वापस जाना होगा और अपने कार्यक्रम की सभी गलतियों को ठीक करना होगा। लेकिन यह परेशान करता है
मैं “रूटीन 2” दृष्टिकोण के कारण प्रोग्राम को अब बंद (या समाप्त) क्यों नहीं कर देता।

या फिर यह प्रतीक्षा विस्फोट घटित होगा, एक बार
प्रोग्राम पूरी तरह से अलग विंडोज़ प्लेटफ़ॉर्म पर चलता है??

मेरा जिज्ञासु मन जानना चाहता है…
और फिर, धन्यवाद!

मैंने क्या प्रयास किया है:

प्रश्न क्षेत्र और मेरे प्रोग्रामिंग प्रोजेक्ट में क्या दिखाया गया है।

समाधान 1

यह कंपाइलर पर निर्भर करता है: जब आप इसे दो पैरामीटर के साथ कॉल करने का प्रयास करेंगे तो अधिकांश आपको “कार्य करने के लिए बहुत कम तर्क” त्रुटि देंगे।

इसके अलावा, जब आप फ़ंक्शन के भीतर iostat का उपयोग करने का प्रयास करेंगे तो यह संभवतः फट जाएगा क्योंकि इसका मान अपरिभाषित होगा और आप मेमोरी के किसी भी हिस्से को पढ़ या लिख ​​​​सकते होंगे।

मैं जाँच करूँगा कि आप क्या उपयोग कर रहे हैं – MSVC माइक्रोसॉफ़्ट विज़ुअल C था और यह एक स्टैंडअलोन उत्पाद था जो लगभग 20 साल पहले विज़ुअल स्टूडियो का हिस्सा बन गया था और जिसका 2019 संस्करण कभी नहीं था।
और मुझे पूरा यकीन है कि वीएस 2019 सी प्रोग्राम के लिए बहुत कम मापदंडों पर एक त्रुटि देगा (सी में ऐसे फ़ंक्शंस को परिभाषित करना संभव है जिनमें तर्कों की एक परिवर्तनीय संख्या होती है – जिसे वैरिएडिक फ़ंक्शन कहा जाता है – लेकिन इसके लिए एक विशेष सिंटैक्स की आवश्यकता होती है और आप उनका उपयोग कैसे करते हैं यह अलग है)।

コメント

タイトルとURLをコピーしました