मैं अभी किसी के सी कोड में आया हूं कि मैं उलझन में हूं कि यह क्यों संकलन कर रहा है। दो बिंदु हैं जो मुझे समझ नहीं आ रहे हैं।
सबसे पहले, फ़ंक्शन प्रोटोटाइप में वास्तविक फ़ंक्शन परिभाषा की तुलना में कोई पैरामीटर नहीं है। दूसरा, फ़ंक्शन परिभाषा में पैरामीटर का प्रकार नहीं है।
#include <stdio.h>
int func();
int func(param)
{
return param;
}
int main()
{
int bla = func(10);
printf("%d", bla);
}
यह काम क्यों करता है? मैंने इसे एक-दो कंपाइलर में टेस्ट किया है, और यह ठीक काम करता है।
-Wstrict-prototypes
दोनों के साथ चेतावनी देता है int func()
और int main()
: xc: 3: चेतावनी: फ़ंक्शन घोषणा एक प्रोटोटाइप नहीं है। आप घोषणा करना चाहिए main()
के रूप में main(void)
अच्छी तरह से।
int func();
संगत है int func(arglist) { ... }
।
int main(void)
।