int valid (int x, int y) {
return x + y;
}
int invalid (int x) {
return x;
}
int func (int *f (int, int), int x, int y) {
//f is a pointer to a function taking 2 ints and returning an int
return f(x, y);
}
int main() {
int val = func(valid, 1, 2),
inval = func(invalid, 1, 2); // <- 'invalid' does not match the contract
printf("Valid: %d\n", val);
printf("Invalid: %d\n", inval);
/* Output:
* Valid: 3
* Invalid: 1
*/
}
लाइन inval = func(invalid, 1, 2);
पर की आवश्यकताओं से मेल नहीं खाता, मैं क्यों एक संकलक त्रुटि नहीं मिल रहा है के लिए एक सूचक पासिंग? यदि func
एक पॉइंटर को 2 इंट्स लेने वाले फ़ंक्शन से अपेक्षा करता है और मैं एक फंक्शन को एक फंक्शन पास करता हूं जो एक इंट लेता है, तो संकलक शिकायत क्यों नहीं कर रहा है?एक समारोह है कि औपचारिक पैरामीटर
इसके अलावा, यह हो रहा है, फ़ंक्शन में दूसरे पैरामीटर y
का क्या होता है?
जिज्ञासा से बाहर ... उपरोक्त प्रोग्राम आउटपुट सही ढंग से करता है? – SysAdmin
हां, ऐसा करता है ... यही कारण है कि मैंने वास्तव में पूछा। –
क्या आप चेतावनियों के साथ संकलित हैं? –