PDA

View Full Version : قابلیت حمل در ++c



golpary
پنج شنبه 15 فروردین 1387, 14:59 عصر
با سلام
من اطلاعاتی راجع به "تعریف قابلیت حمل بودن برنامه" و اینکه "چگونه استفاده از توابع جدید که در توابع کتابخانه ای استاندارد ++c موجود نمی باشد، قابلیت حمل برنامه را کاهش می دهد" می خواهم.
ممنون میشم راهنمایی بفرمایید.

Nima_NF
پنج شنبه 15 فروردین 1387, 16:19 عصر
قابلیت حمل در ++C یعنی اینکه برنامه شما بدون تغییر، بتواند در سایر سخت افزار ها / سیستم عامل ها اجرا شود (و یا توسط سایر کامپایلر ها بدون تغییرات خاصی کامپایل و قابل اجرا شود)

مثلا مایکروسافت با ایجاد تغییرات خاصی در برخی از توابع استاندارد C جهت ایجاد امنیت بیشتر باعث شده است تا قابلیت حمل کاهش یابد چرا که برنامه هایی که از این توابع استفاده می کنند نیازمند چندین dll خاص مایکروسافت با نام CRT هستند که با وجود اینکه توسط همه کامپایلر ها در ویندوز قابل استفاده هستند، اما در سایر سیستم عامل ها پشتیبانی نمی شوند و نمی توان از آن ها استفاده کرد .

پس به عبارت دیگر یا باید خودتان به صورت دستی معادل آن ها را در کدهای مخصوص سایر پلتفرم ها مثل لینوکس (لابه لای کدهای قبلی خود) بنویسید و یا فقط از همان توابع استاندارد استفاده کنید و سایر موارد را حذف کنید.

golpary
جمعه 16 فروردین 1387, 13:17 عصر
خیلی ممنون از توضیحات مفیدی که دادید.
و اما یه سوال دیگه؛ چرا تمام توابع کتابخانه ای ریاضی، نوع آرگومان ورودی و داده ای که برمی گردادنند از نوع Double است؟!

Nima_NF
جمعه 16 فروردین 1387, 14:42 عصر
و اما یه سوال دیگه؛ چرا تمام توابع کتابخانه ای ریاضی، نوع آرگومان ورودی و داده ای که برمی گردادنند از نوع Double است؟!
ریاضی یعنی دقت در محاسبات و دقت هم یعنی عدد اعشاری بیشتر، پس double با توجه به اینکه 8 بایتی می باشد می تواند تا 15 رقم داشته باشد و جای int صحیح 4 بایتی و float اعشاری و ... را بگیرد، یعنی در صورتی که می خواهید در متغیر دیگری ذخیره کنید به راحتی آن را cast کنید.

اما با وجود آن همه double نیستند سایر انواع نیز در کتابخانه ریاضی وجود دارد