انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: خطای undefined reference  (دفعات بازدید: 2580 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
خطای undefined reference
« : 13 فروردین 1389، 10:07 ب‌ظ »
سلام
نمی دونم این خطا چیه وچرا به وجود می یاد یکی بیاد کمک کنه متن کامل خطا:
vahid@GNU:~/newproject$ g++ nc.cpp
/tmp/cchViyZW.o: In function `main':
nc.cpp:(.text+0x6b): undefined reference to `compare(int*, int*, int, int)'
collect2: ld returned 1 exit status
و سورسی که کامپایل می کنم
#include <iostream>
using namespace std;
//void sprint (int string[] , int k);
int compare(int n[] ,int m[],int nk ,int mk);
int n[5];
int main()
{
  for (int j=3;j<5;j++)
    n[j]=7;
   int m[2];
  m[0]=1;
  m[1]=6;
int roc=0;
roc=compare (n ,m ,5 ,2);
cout << roc<<endl;
return 0;
}
///newcompare
int comapre(int n[] ,int m[] ,int nk ,int mk)
{
  int rc;///return compare
  int ni;
  int mi;
  ni=mi=0;
  while (n[ni]==0)
    ni++;
  while(m[mi]==0)
    mi++;
  int non ,nom ;/// number of n and m!!
  non=nk-ni;
  nom=nk-mi;
  if (non>nom)
    rc=1;
  if (nom>non)
    rc=2;
  if (nom==non)
  {
    int i=0;
    while (i<=nom)/// farghi nemikone nom=non
    {
    if(n[ni+1]>m[mi+1])
    {
      rc=1;
      break;
    }
    if(m[mi+1]>n[ni+1])
    {
      rc=2;
      break;
    }
    if(n[ni+1]==m[mi+1])
    {
      ni++;
      mi++;
    }
    i++;
    if(i==nk)
    {
      rc=0;
      break;
    }
  }
  }
  return rc;
}
ممنون
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین mahdisama

  • Sr. Member
  • *
  • ارسال: 344
پاسخ به: خطای undefined reference
« پاسخ #1 : 14 فروردین 1389، 01:32 ق‌ظ »
ارایه هاتو new کن ببین چی میشه  ::)

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
پاسخ به: خطای undefined reference
« پاسخ #2 : 14 فروردین 1389، 06:49 ق‌ظ »
سلام
منظورت از new متغیر پویاست؟
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره

آفلاین mozhdeh

  • Jr. Member
  • *
  • ارسال: 53
پاسخ به: خطای undefined reference
« پاسخ #3 : 14 فروردین 1389، 10:20 ب‌ظ »
وقتی آرایه m رو تعریف می‌کنید، متغیر m به اولین عضو آرایه اشاره می‌کنه. پس وقتی تابع compare رو با m و n صدا می‌زنید، برنامه دنبال تابعی می‌گرده که دو آرگومان اولش اشاره‌گر به int باشن. و چون تابع compare شما آرگومان‌هاش آرایه هستن، خطا می‌ده که این تابع پیدا نشده.

آفلاین mahdisama

  • Sr. Member
  • *
  • ارسال: 344
پاسخ به: خطای undefined reference
« پاسخ #4 : 15 فروردین 1389، 12:53 ق‌ظ »
اره منظورم همونه .
int* a = NULL;   // Pointer to int, initialize to nothing.
int n;           // Size needed for array
cin >> n;        // Read in the size
a = new int[n];  // Allocate n ints and save ptr in a.
for (int i=0; i<n; i++) {
    a[i] = 0;    // Initialize all elements to zero.
}
. . .  // Use a as a normal array
delete [] a;  // When done, free memory pointed to by a.
a = NULL;     // Clear a to prevent using invalid memory reference.
البته به جای n عدد هم میتونی بزاری ;D

آفلاین sisyphus

  • Jr. Member
  • *
  • ارسال: 76
پاسخ به: خطای undefined reference
« پاسخ #5 : 15 فروردین 1389، 02:47 ق‌ظ »
نقل‌قول
int comapre(int n[] ,int m[] ,int nk ,int mk)
{
compare باید باشه.

آفلاین سید وحید رضا برهانی

  • High Hero Member
  • *
  • ارسال: 1668
  • جنسیت : پسر
  • یک مخالف نرم افزار اوپن سورس
پاسخ به: خطای undefined reference
« پاسخ #6 : 15 فروردین 1389، 06:17 ق‌ظ »
سلام
ممنون از دوستان
نقل‌قول
int comapre(int n[] ,int m[] ,int nk ,int mk)
{
compare باید باشه.
دقیقا دیشب خودمم دیدم کلی خندیدم
نرم افزاری که نشه سیخ انگولکش کرد (به هر دلیلی چه به‌خاطر قانون و چه پیچیدگی یا توسعه سریع)نرم افزار آزاد نیست حالا مهم نیست چه بنیادی یا چه افرادی اون رو نوشته باشند یا GPL باشه یانه!
نرم افزار آزاد یک جنبش هست نه یک تیکه کاغذ پاره(GPL)
حق فهمیدن از حق خوندن مهمتره