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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: فريد در 25 آذر 1387، 03:25 ب‌ظ

عنوان: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: فريد در 25 آذر 1387، 03:25 ب‌ظ
سلام دوستان
آيا مي توان به طريقي كتابخانه هاي  c  ويندوزي را در  c لينوكسي پياده كرد كه هيچ تفاوتي با هم نداشته باشند؟
يعني وقتي يك برنامه را كه با c در ويندوز نوشته شده را به داخل c در لينوكس كپي كنيم بدون هيچ ايرادي كار كند...
پيشاپيش ممنون از راهنماييتان...!
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: yunas در 25 آذر 1387، 07:30 ب‌ظ
منظورت کدوم کتابخونه هاست؟
STL ، َATL ، MFC یا چیز دیگه ای؟
اگه منظورت کتابخانه های سنتی C هستن مثل stdio.h یا stdlib.h باید بگم اینها تفاوتی بین نسخه ویندوز و لینوکس وجود نداره.
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: فاراب در 25 آذر 1387، 07:55 ب‌ظ
بعلاوه خیلی از کتابخانه‌های C مربوط به DOS هستند که مثلما در لینوکس وجود ندارند.
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: فريد در 26 آذر 1387، 01:55 ب‌ظ
من فعلا c بلد نيستم و وفتي كه مي خواستم اونو تو لينوكس از روي يه كتاب (كه براي c ويندوز نوشته شده بود) ياد بگيرم متوجه شدم كه كد هايي كه در كتاب نوشته بعضا در c لينوكس كار نمي كنه مثلا  كتابخانه math توش وجود نداشت ولي بعد ها شنيدم كه با انجام كار هايي ميشه كاري كرد كه فرقي باهم نداشته باشند ولي مطمئن نيستم كه چقدر درسته...


در كل من مي خوام ببينم ميشه c رو تو لينوكس از روي كتاب هاي متداول موجود در بازار ياد گرفت؟


در مورد mono چي؟ آيا mono  هم همين فرق ها رو با VB.net داره؟
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: z.k در 27 آذر 1387، 12:27 ب‌ظ
سلام

تفاوت چندانی ندارند، شما میتونید از روی همون کتاب ها تو لینوکس یاد بگیرید. syntax فرقی نمیکنه تو ویندوز یا لینوکس ولی یک سری چیزها متفاوت هست که به راحتی قابل حل هستند.
در مورد کتابخانه math، تو لینوکس به راحتی میشه ازش استفاده کرد.
مثلا کد زیر رو ببینید
#include <stdio.h>
#include <math.h>

#define PI 3.14159265

int main ()
{
  double param, result;
  param = 30.0;
  result = sin(param*PI/180);
  printf ("The sine of %lf degrees is %lf.\n", param, result );
  return 0;
}


این برنامه برای کامپایل در لینوکس نیاز به استفاده از -lm داره، بدون این کامپایل نمیشه

کامپایل
gcc test.c -lm -o test
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: فريد در 30 آذر 1387، 02:19 ب‌ظ
ميشه بيشتر توضيح بديد...؟ يعني با اجراي اين كد هر برنامه اي نوشته باشم كه تو ويندوز كار كرده باشه تو لينوكس هم كار مي كنه؟؟ اگه ميشه به زبان ساده توضيح بديد!  ;)
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: سعید رسولی در 30 آذر 1387، 03:46 ب‌ظ
ميشه بيشتر توضيح بديد...؟ يعني با اجراي اين كد هر برنامه اي نوشته باشم كه تو ويندوز كار كرده باشه تو لينوكس هم كار مي كنه؟؟ اگه ميشه به زبان ساده توضيح بديد!  ;)
نه نه... منظورشون این بود که تفاوت زیادی با هم ندارن. البته بستگی داره شما برای چه کامپایلری نوشته باشی(فقط به سیستم‌عامل ربط نداره). مثلاً توی ویندوز اگه با IDE هایی مثل Dev-CPP یا CodeBlockes (که از ابزارهای گنو مثل gcc  و ++g استفاده میکنن) کار کنید اگه کدی که توی ویندوز با اینا (در واقع با gcc و ++g) کامپایل میشه، همون کد رو بیارید تو لینوکس، بدون هیچ تغییری (یا با تغییر خیلی جزئی) کامپایل میشه. یا بالعکس.
اما اگه بخواید کامپایلر رو تغییر بدید باید تغییرات بیشتری بدید، اگه برنامه بزرگ و پیچیده باشه، کار سخت میشه. حتی اگه با همون کامپایلر بخواید فقط سیستم‌عامل رو تغییر بدید، اگه برنامه پیچیده باشه کار سختیه، در واقع همون چیزی هست که بهش میگن «پورت کردن».
البته برای برنامه‌های کوچیک زیاد مشکلی نیست. حتی برنامه‌های گنده‌ای هم هستن که از لینوکس به ویندوز پورت شدن یا بالعکس. اما کار تغییر کامپایلر فکر کنم خیلی سخت‌تر باشه. مثلاً کرنل لینوکس فقط و فقط با gcc کامپایل میشه(نه با کامپایلر بورلند و اینتل و...).
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: کنجکاو! در 19 دی 1387، 11:45 ق‌ظ
سلام دوستان،
من یکی از دوستام به لینوکس علاقه مند شده و در ضمن می خواد برنامه نویسی C/C++ رو هم یادبگیره! از پرسید چه کتابی برای آموزش برنامه نویسی C++ خوبه من بهش گفتم کتاب دایتل دایتل چگونه به C++ برنامه بنویسیم؟ کتاب خوبیه! اما گفتش قبلش میخوام C رو یاد بگیرم! من هم کتاب هایی که میشناختم مال ویندوز و کمپایلر VC++ بود. برای همون گفتم فعلاً با همین دو سه تا آموزش مجله حلقه اوبونتو سر کنه تا بهش خبر بدم!
حالا می خوام بدونم شما کتابی مناسب برای آموزش C در لینوکس سراغ ندارید؟ اگر فارسی باشه که چه بهتر وگرنه همون انگلیسیش!
سرچ کردم این انجمن رو به چیز مناسبی بر نخوردم! الان هم امکان جستجو در گوگل و تکنوتاکس رو ندارم!
ممنون میشم کمک کنید!@
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: کنجکاو! در 19 دی 1387، 03:35 ب‌ظ
کسی در مورد کتاب Linux Programming by Example اطلاعاتی داره؟ تا جایی که من فهمیدم مربوط به C در لینوکس هست! کسی می دونه دقیقاً برای چیه؟
این کتاب چطور؟ Linux For Programmers And Users

عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: مهدی پیشگوی در 21 دی 1387، 09:56 ق‌ظ
من کتابهای بسار زیادی راجع به برنامه نویسی در لینوکس دارم انشاالله اگه وقت کردم آپلود می کنم بهتون لینک میدم .
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: محمد حسین حیدری در 21 دی 1387، 08:17 ب‌ظ
فرق خیلی زیادی نمی کنه غیر از مرحله کامپایل بعضی وقتا هم شما از کتابخانه های دینامیک استفاده می کنید که به برنامه Attach نمیشه ;)
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: کنجکاو! در 22 دی 1387، 02:51 ب‌ظ
فرق خیلی زیادی نمی کنه غیر از مرحله کامپایل بعضی وقتا هم شما از کتابخانه های دینامیک استفاده می کنید که به برنامه Attach نمیشه ;)
درسته، می دونم ولی گیر داده که از این کتاب ها می خواد! :D
من کتابهای بسار زیادی راجع به برنامه نویسی در لینوکس دارم انشاالله اگه وقت کردم آپلود می کنم بهتون لینک میدم .
ممنون جناب پیشگویی،
منتظر می مونم سرتون خلوت تر بشه! هر چند به نظرم بهتر بود خیلی وقت پیش اینجور کتاب ها رو روی کدباز آپلود می کردید! ;) (مرجع خیلی خوبیه!)
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: sahama در 23 دی 1387، 12:04 ق‌ظ
فقط یه نکته که منو تو دردسر انداخت اینکه خود کامپایلر ویژوال استدیو با g++ دستورات رو به نوع متفاوتی اجرا می کنند
عنوان: پاسخ به: تفاوت c در لينوكس بc در ويندوز
ارسال شده توسط: کنجکاو! در 23 دی 1387، 11:38 ق‌ظ
سلام دوستان،
یک کتاب جالب پیدا کردم:
Sams Teach Yourself C++ for LINUX in 21 Days
Solid language tutorial, but not really dedicated to Linux

TEACH YOURSELF C++ FOR LINUX IN 21 DAYS, while it may seem the ideal book to the budding Linux programmer because of its size, is a poor book for the beginner, and indeed for most programmers hoping to use C++. The book is a so-so introduction to C++ the language, but doesnýt offer any useful Linux-specific information (if you want to program in Linux, you probably already know what vi and emacs are, and how to open a command-line). The CD-ROM, containing a distribution of Mandrake Linux, is three years old and thus already ancient compared to todayýs Linux scene.

The book is not really a “21 day” course, but rather a course made up of 21 units. Some units are too big to tackle in one day, such as the chapters on references and error-handling, unless one has 8 hours to dedicate to this. Iýd say three months is a reasonable amount of time to complete this book.

When this book came out, in 1999, the K Desktop Environment (KDE), programmed in C++, was the most popular desktop and thus budding programmers could find plenty of code to work with and improve. In the years since, however, the GNOME desktop, programmed in C, has gained ascendency among power users, and is now the default in many distributions. So, learning C++ on Linux nowadays as a first step in programming gives one very little to work with, as C is the primary language. While in many operating systems one doesnýt have to learn C before C++, in Linux it is almost essential because the kernel, most if not all GNU software, and GNOME programs are all in C. So, for the beginning Linux programmer Iýd advise first going through Samýs C FOR LINUX PROGRAMMING IN 21 DAYS. Afterward, one could use this book, or ideally a more Linux-centric book, to reap the object-oriented benefits of C++.

Unfortunately, it is quickly apparent that TEACH YOURSELF C++ FOR LINUX IN 21 DAYS is actually just Samýs TEACH YOURSELF C++ in 21 DAYS with a couple of token references to the GNU Compiler Collection, and a very out-of-date “bonus week” added. This becomes particulary obvious as every chapter has talks about how to compile each example on, of all things, DOS. Another problem stemming from the fact the most of the authors arenýt Linux programmers, one that consistently shows throughout the book, is the authors’ lack of familiarity with free software and the GPL. As a result, the chapter on software design shows a process best suited to the programming department of a corporation, where everyone can get together every morning to discuss the project, and this would not be very efficient in the Linux world of international contribution over distance. A glance at the authors’ experience shows they may not be dedicated to ideals of the GNU Public License and open-source software, for example Jesse Libery is now consulting on the .NET project. I would urge anyone wishing to program on Linux to use resources written by actual Linux programmers
هر چند کتاب خوبیه ولی زیاد کامل نیست!