जब मैं सी में संकलन करने का प्रयास करता हूं तो मुझे इस समस्या का सामना करना पड़ रहा है। जब मैंने सहायता के लिए सहायता 50 से पूछा, तो उसने मुझे यह संदेश दिया "अपरिभाषित संदर्भ" द्वारा, क्लैंग का अर्थ है कि आपने एक फ़ंक्शन, प्रिंट कहा है, जो प्रतीत नहीं होता है लागू किया जाना है। यदि उस समारोह में है, वास्तव में, लागू किया गया है, संभावना है कि आप प्रिंट को लागू करने वाली फ़ाइल के खिलाफ "लिंक" करने के लिए क्लैंग बताना भूल गए हैं। क्या आप भूल गए -lfoo के साथ संकलित करें, जहां foo पुस्तकालय है जो प्रिंट को परिभाषित करता है?" इस वजह से, मैंने #include <foo.h>
को लागू करने का फैसला किया, हालांकि संकलन करने की कोशिश करने के बाद, मुझे एक घातक त्रुटि संदेश प्राप्त हुआ। यह मेरा कोड है
#include <cs50.h>
#include <stdio.h>
void print(char c, int n);
//Code
int main(void)
{
int n;
do
{
n = get_int("Height:");
} while(n < 1 || n > 8);
for(int i = 0; i < n; i++)
{
print(' ', n - 1 - i);
print('#', i + 1);
print(' ', 2);
print('#', i + 1);
printf("\n");
}
}
`
2 जवाब
आपने print
... घोषित कर दिया है, लेकिन क्रियान्वयन कहां है?
घोषणा केवल संकलक के लिए एक वादा है कि आपके पास एक ऐसा फ़ंक्शन है जो किसी दिए गए प्रकार के कुछ पैरामीटर लेता है और किसी दिए गए प्रकार को वापस करता है।
जब संकलक आपको फ़ंक्शन को कॉल करते हुए देखता है तो यह त्रुटियों की रिपोर्ट कैसे करेगा यदि प्रकार मेल नहीं खाते हैं ...
कार्यान्वयन वह जगह है जहां संकलक जानता है कि उस फ़ंक्शन से कुछ वापस करने के लिए पैरामीटर के साथ क्या करना है।
यहाँ एक नमूना कार्यान्वयन है:
void print(char c, int n)
{
printf("My char is %c and my int is %d\n", c, n);
}
सी में कोई मानक पुस्तकालय प्रिंट() फ़ंक्शन नहीं है। आपने वास्तव में इसे कहीं भी परिभाषित नहीं किया है।