मैं एक फ़ाइल "SimpleFunctions.h" कहा जाता है इस प्रकार परिभाषित किया गया है:समारोह पहले से ही सी में त्रुटि परिभाषित ++
#ifndef SIMPLEFUNCTIONS_H
#define SIMPLEFUNCTIONS_H
namespace my_namespace {
double round(double r) { return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5); }
float round(float r) { return round((double)r); }
}
#endif // SIMPLEFUNCTIONS_H
इस फ़ाइल में पहले से ही एक फ़ाइल में शामिल किया गया था और यह ठीक काम कर रहा था।
अब आज मैंने इसे दूसरी फ़ाइल में शामिल किया है और यह अब काम नहीं करता है। लिंक समय पर, यह मुझे बताता है कि फ़ंक्शन पहले से ही "firstfile.obj" में परिभाषित है।
हालांकि, चूंकि मैं उपयोग कर रहा हूं गार्ड शामिल हैं, मैं उम्मीद करता हूं कि कार्यों को केवल एक बार परिभाषित किया जाए, या क्या मुझे कुछ याद आ रहा है?
आप सही हैं। यही कारण है कि आपको हेडर के अंदर कार्यों को कार्यान्वित करने से बचना चाहिए। –
'इनलाइन' _not_ को अंतराल संबंध का संकेत देता है। http://stackoverflow.com/questions/4957582/how-can-i-prove-that-inline-functions-default-to-internal-linkage –
@ चार्ल्स: मेरी गलती - मैंने जवाब संपादित किया है – pepsi