انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: سالار مقدم در 25 شهریور 1392، 03:09 بظ
-
سلام دوستان
امروز می خواستم ببینم تابع فلور چیکار می کنه که با یه ارور عجیب غریب مواجه شدم. اشکال از کجاست؟
#include <stdio.h>
#include <math.h>
int main( void )
{
double x, y;
printf( "enter number: " ) ;
scanf( "%lf", &x );
y = floor( x + .5 );
printf( "%lf\n%lf", x, y );
return 0;
}
اینم ارور:
/tmp/cc20YONJ.o: In function `main':
ler.c:(.text+0x3f): undefined reference to `floor'
collect2: error: ld returned 1 exit status
-
دوستان برنامم خیلی سادست! واقعا عجیبه! حالا به جای x اگر یه عدد بزارم به راحتی به کوچک ترین عدد گردش می کنه ها :|
-
gcc floor.c -lm -o floor
linuxreview (http://wiki.linuxreview.ir/%D9%85%D8%B9%D8%A7%D8%AF%D9%84%D9%87_%DB%8C_%D8%AF%D8%B1%D8%AC%D9%87_%D8%AF%D9%88%D9%85_-_c)
-
gcc floor.c -lm -o floor
linuxreview (http://wiki.linuxreview.ir/%D9%85%D8%B9%D8%A7%D8%AF%D9%84%D9%87_%DB%8C_%D8%AF%D8%B1%D8%AC%D9%87_%D8%AF%D9%88%D9%85_-_c)
لعنتی! مگه من کتاب خانه ای ریاضی رو بار گزاری نکرده بودم که حالا باید تو کامپایلشم بارگزاریش کنم؟
-
پیشنهاد من اینه که با یک کتابی مثل C: The Complete Reference شروع کنید که اول در مورد این موارد توضیح میده.
بارگزاری Headerها برای کامپایل کردن کافیه، ولی برای لینک کردن نیاز به مشخص کردن کتابخانه هستش. این موارد توی همون کتاب توضیح داده شده.
-
پیشنهاد میکنم از اکلیپس استفاده کنی که امکانات خوبی برای لینککردن کتابخونههای موقع کامپایل بهت میده
-
تابع floor به بزرگترین عدد درست کوچکتر یا مساوی تبدیل میکنه. حالا floor(x+.5) به نزدیکترین عدد درست تبدیل میکند با ارجحیت عدد بزرگتر (یعنی ۴.۵ رو به ۵ تبدیل میکنه نه ۴). Floor همون جزء صحیحه.