मैं है निम्नलिखित सी कोड:जीसीसी रिपोर्ट "समारोह की पूर्ण घोषणा" दौर क्यों करती है?
#include <math.h>
int main(int argc, char ** argv)
{
double mydouble = 100.0;
double whatever = round(mydouble);
return (int) whatever;
}
जब मैं इस संकलन, मैं चेतावनी मिलती है:
round_test.c: In function ‘main’:
round_test.c:6: warning: implicit declaration of function ‘round’
round_test.c:6: warning: incompatible implicit declaration of built-in function ‘round’
मैं सी के साथ जंग लगी हूँ, लेकिन मैंने सोचा कि # शामिल एक घोषणा लाया गोल() के लिए दायरे में। मैंने अपने एएनएसआई मानक की जांच की है (सी 99 मेरी एकमात्र प्रति है) जो पुष्टि करता है कि राउंड() फ़ंक्शन math.h शीर्षलेख में मौजूद है। मुझे यहां क्या समझ नहीं आ रहा है?
संपादित करें: कंपाइलर उबंटू (निडर, आईआईआरसी) पर जीसीसी 4.3.2 है। जीसीसी-ई चल रहा है:
$ gcc -E round_test.c | grep round
# 1 "round_test.c"
# 1 "round_test.c"
# 2 "round_test.c" 2
double whatever = round(mydouble);
इसलिए परिभाषा स्पष्ट रूप से शीर्षकों में नहीं मिल रही है।
धन्यवाद, -std = c99 इसे हल करने लग रहा था। मुझे एहसास नहीं हुआ था() एक सी 99 जोड़ था (और निश्चित रूप से मेरे सभी संदर्भ सी 99 हैं और इसका उल्लेख करने के लिए उपेक्षा) –
(आश्चर्यचकित देखो) क्या राउंड() वास्तव में एक सी 99 अतिरिक्त है? –
दाएं, सी 8 9 ने 'राउंड()' फ़ंक्शन का वर्णन नहीं किया (निश्चित रूप से कंपाइलर इसे एक एक्सटेंशन के रूप में प्रदान कर सकते हैं)। – pmg