كي پايه است با هم سي ياد بگيريم؟

وضعیت
موضوع بسته شده است.

***UNIQUE***

Active Member
----------------------------------------------------------------------------------------------------------------------------
منظورم اينه كه وقتي برنامه هايي را با كامپايلرهاي سي ، مثل توربو سي ، ويژوال سي ، يا سي شارپ مي سازيم، آيا برنامه يا اپليكيشن ما مستقل مي تونه روي ويندوز يا داس زندگي كنه ؟ يا بايد با فايل هايي حمايت بشه؟
----------------------------------------------------------------------------------------------------------------------------
سلام
ببخشید من این هفته یه خورده سرم شلوغ بود نتونستم زودتر مطلب رو بذارم
سیستم net. میشه گفت هم مبتنی بر Windows است هم مبتنی بر Proccessor . بر روی Proccessor های x86 کار میکنه البته Proccessor 80486 که خیلی ضعیف برای این کار اما از 80586 به بعد net. روشون کار میکنه و CLR برای windows های 32 بیتی داده شد .
در VisualStudio6 ما اگر از یه dll استفاده میکردیم باید بر روی سیستمی که میخواستیم برنامه اجرا بشه اون dll رو Register میکردیم و همه این dll ها (اگر اشتباه نکنم) در شاخه Windows/System32 قرار میگرفتند و اگر میخواستیم Version دیگه ای از اون dll رو یا dll دیگه ای با همون نام رو روی سیستم Register کنیم با مشکل و خطا مواجه میشدیم چون نمیشد دو تا فایل با یک نام توی این شاخه قرار بگیره اما درVisualStudio.net تغییرات زیادی در فریم ورک ایجاد شده و ما دو نوع dll داریم یا private
هستند یا StronglyNamed که بهش Public یا Global هم میگن در اینجا اگر شما شاخه برنامت رو مثلا" َApplcation1 را کل شاخه اش رو کپی کرده و ببری روی کامپیوتر شخص دیگه ای پیست کنی و فایل exe اون رو اجرا کنی بدون هیچ مشکلی اجرا میشه(البته به شرطی که net FrameWork. روی سیستم اون شخص نصب باشه البته در ویندوزهای XP و 2003 net FrameWork. همزمان با ویندوز نصب میشه اما در نسخه های قبلی windows باید نصب بشه) و دیگه احتیاجی به register شدن dll Private شما نیست همین که dll های مورد استفاده در برنامت رو در شاخه یا زیر شاخه Application1 قرار داده باشی کافیه چون برنامه وقتی اجرا میشه و به CLR میگه من به این dll نیاز دارم ابتدا در شاخه و زیر شاخه های این Application رو دنبال این dll میگرده و اگر این dll در اونجا بود (البته یه سری چیزهای دیگرو هم بررسی میکنه) و بعد میگه این dll Private است اگر نبود میره در شاخه Windows/Assembly (در net. وقتی نصب میشه همه dll های StronglyNamed در زیر شاخه ای به نام assembly در شاخه Windows قرارمیگیرند )و اونجا دنبال این dll میگرده اگر اونجا بود (با بررسی یه سری شاخص های دیگه میکه این dll Public است) و استفاده میکنه اگر اونجا هم نبود دراینترنت دنبالش میگرده اگر اونجا هم نبود اونوقت error میده.
dll های stronrlyNamed به این صورت نامگذاری میشوند که در شاخه Assembly یک دایرکتوری به اسم system.data ایجاد میشه و تمام ورژنهای dll System.data داخل این directory قرار میگیرند و نامگذاریشون شامل 4 قسمت است Version (نسخه dll )و public Key Token (یک عدد 64 بیتی که 16 حرف ان به صورت تصادفی برای نامگذاری انتخاب میشود ) و Name (نام)و Calture (کشور و زبان) وجود داره و به دلیل نامگذاری قوی که گفته شد دیگه در register شدن dll Public خطا بروز نمیکنه و اگه dll ها هم نام هم باشند مشکل بوجود نمییاد و نامگذاری dll های Private هم به همین صورت است اما وارد کردن همه این موارد الزامی نیست و اگر شما یه dll رو Public تعریف کنی و اون رو در زیر شاخه برنامت قرار بدی CLR از همونجا اون رو به عنوان یه dll Private خودش در نظر میگیره و استفاده میکنه اما بالعکس این قضیه صادق نیست و نمیشه یه dll Private رو به عنوان public استفاده کرد.
dll های Private فقط توسط همون برنامه ای که در زیر شاخش قرار دارن میتونن استفاده بشن اما dll های Public توسط برنام های دیگه هم همزمان میتوننن استفاده بشن .
امیدورام مطلب رو خوب بیان کرده باشم
فکر میکنم برای بازتر شدن این موضوع مقاله ای که گذاشتم بتونه کمک کنه.
موفق باشید
 
#C رو دقیق نمیدونم اما C و ++C رو اگر از فایل های System بهره نگیرید فکر نمیکنم مشکلی پیش بیاد . چون Pascal کاملا به Dos یا windows وابسته بود (uses crt یا uses wincrt)

اما در C چنین چیزهایی نداریم. البته من تا حالا برنامه هایی رو که اینور نوشتم تو linux نبردم و اگر میخواستم تو linux اجرا کنم تو همون جا نوشتم اما شک دارم اشکالی پیش بیاد.

با سپاس

شهاب
 

saalek110

Well-Known Member
ممنون جناب يونيكيو و جناب استرانگر ،
خيلي عالي بود. وجود شما دوستان در اين سايت واقعا نعمت بزرگيه.
.
 
آقا جریان این انجمن ما چی شد ؟ Counter ها راه افتاد، راه می افته این انجمن C یا نه ؟
 

saalek110

Well-Known Member
Microsoft Specific —>

The ANSI C standard allows identifiers with two leading underscores to be reserved for compiler implementations. Therefore, the Microsoft convention is to precede Microsoft-specific keyword names with double underscores. These words cannot be used as identifier names. For a description of the ANSI rules for naming identifiers, including the use of double underscores, see Identifiers.

The following keywords and special identifiers are recognized by the Microsoft C compiler:

__asm dllimport2 __int8 naked2
__based1 __except __int16 __stdcall
__cdecl __fastcall __int32 thread2
__declspec __finally __int64 __try
dllexport2 __inline __leave


1. The __based keyword has limited uses for 32-bit target compilations.

2. These are special identifiers when used with __declspec; their use in other contexts is not restricted.

Microsoft extensions are enabled by default. To ensure that your programs are fully portable, you can disable Microsoft extensions by specifying the /Za option (compile for ANSI compatibility) during compilation. When you do this, Microsoft-specific keywords are disabled.

When Microsoft extensions are enabled, you can use the keywords listed above in your programs. For ANSI compliance, most of these keywords are prefaced by a double underscore. The four exceptions, dllexport, dllimport, naked, and thread, are used only with __declspec and therefore do not require a leading double underscore. For backward compatibility, single-underscore versions of the rest of the keywords are supported.

END Microsoft Specific​

منظور از ميكروسافت سي كامپايلر كدام ها است؟
با تشكر.
 
آخرین ویرایش:

saalek110

Well-Known Member
يك بحثي هست و آن اين كه :
ما دو چيز داريم.
اول زبان سي
دوم كامپايلرهاي مختلف

من هم ((كوئيك سي)) نصب كرده ام ، هم ((توربو سي)) ، هم ((بورلند سي)).
مي خواهم بدانم آموزشهايي كه الان داره در انجمن داده ميشه با هر سه سازگاره.
اين سئوال وقتي برايم پيش آمد كه وقتي فايل winfax.h را سرچ كردم، فقط در بورلند سي موجود بود. پس در بورلند سي امكاناتي(توابعي) مورد قبول است كه در توربو سي غير قابل قبول است.
مي خواهم بدانم اين تفاوتها در كجاهاست.
((ميكرسافت سي كامپايلر)) ها هم انگار دستوراتي دارند كه مخصوص خودشان است.
همان ها كه در پست قبل با رنگ آبي نمايش داده ام.

اين تفاوتها از چه قرار است. و مشتركات چيست. يعني نام قسمت مشترك چيست. ((استاندارد سي)) است يا چيز ديگر؟
 
آخرین ویرایش:

***UNIQUE***

Active Member
____________________________________
پس در بورلند سي امكاناتي(توابعي) مورد قبول است كه در توربو سي غير قابل قبول است.
____________________________________
صحبت شما درسته تفاوتشون توی چند تا include (که یکی از این کامپایلرها ممکن اضافه تر داشته باشه
)است .اما اینها توابع اصلی نیستن یه سری توابع خاص که شاید خیلی کم و برای کارهای خاصی استفاده میشه
من جواب سوال شمارو دقیق نمیدونم اما به طور کلی هم کار تو محیط بورلند سی راحتتره هم فکر میکنم امکاناتش بیشتره و مناسبتره
 
کامپایلرها ...

بعضی از این تغییرات از حد توابع بالاتر میروند و به چند بحث نوع تعریف متغیرها ، توابع خاص ( مثلا برای کار با سخت افزار و ... ) ، حساس بودن به حروف بزرگ و کوچک Case Sensetive ( شنیدم در Visual Studio 2005 به حروف حساس نیست ، یعنی main با Main یکی است که البته این مسئله بحث قابله استفاده بودن component های قدیمی که بسیار مهم است و .NET و OOP بر اساس این بنیان گذاشته شده).

و کتابی رو هم که شروع میکنید براساس یک کامپایلر آموزش میده ولی اکثر موارد به همان Standard C متصل است که بین همه مشترک هستش. راجب به این استاندارد اطلاع خاصی ندارم و نمیدونم آیا مثل W3C که برای Web هستش جایی هست که استاندارد هاش رو درست کنند یا نه ؟! اگر اطلاعاتی پیدا کردم حتما به شما هم خبر میدهم ! در ضمن چرا این بحث ها رو تو انجمن C پی نمیگیرید ؟
 

saalek110

Well-Known Member
از اساتيد محترم ممنون بخاطر پاسخهاي خوبشان.
خيلي مسائل در اين مورد برايم حل شد..
بعدا ريز تر ميشه روي تفاوت سينتكسها در كامپايلرهاي مختلف بحث كرد ولي خيلي چيزها تا همين جا مشخص شد.
با تشكر فراوان.
.
 
سلام.
از همه ی دوستان گرامی دعوت میشود، تا برای مشارکت و فعال کردن انجمن C به صحنه بیایند .

توجه :

*** همه آزادند در همه ی تاپیک های عمومی مشارکت کنند. ما پیشاپیش از همه ی شما برای فعالیتتان سپاسگذاریم

*** همه آزادند هر نوع تاپیکی که میخواهند به صورت خصوصی ( به بحث تاپیک های عمومی و خصوصی مراجعه کنید ) برای خود ایجاد کنند و به فعالیت بپردازند. فعالیت ها به آموزش محدود نمیشود، هر گونه موضوع مرتبط ( بر ضد C رو که امروز دوستان زدند ;) ) ----> در مورد فعالیت در تاپیک های خصوصی هم استارتر ها از شما تشکر میکنند ;) :d

در پایان بار دیگر تاکید میکنم که هیئت امنا تنها حامی شما برای فعالیت است و جلوی هیچ گونه نو آوری را نمیگیرد.
با انتقادات خود ما را راهنمایی کنید.

با سپاس فراوان.
سخنگوی هیئت امنا.
 

arashdata

New Member
سلام.خسته نباشيد
تاپيك جالبي داريد متشكرم اگه ميشه لطفا به منم ياد بديدمن پايه هستم لطفا بگيد بايد از كجا شروع كنم
 

saalek110

Well-Known Member
atari

ببخشيد سئوالم را اينجا مي پرسم. آخه در انجمن سي نمي دانم بايد در چه تاپيكي سئوالهاي متفرقه را بپرسم. لطفا راهنمايي كنيد يا اگر تاپيكي مورد نياز است بگشاييد.

حالا سئوالم اينه:
من شنيدم هواپيماي آتاري را با سي نوشته اند. مي خوام بدونم اگر من هم با سي آن را بنويسم ، با همان كيفيت اجرا ميشه؟ مثل سرعت اجرا.
بعد اگر اطلاعات مختصري راجع به اين برنامه بديد ممنون مي شم. مثلا آن همه فايل كه كنار فايل اصلي است چيه؟ آخه در آموزشهاي انجمن ، همه برنامه در يك فايل جا داده ميشه. ممكنه حالا زود باشه كه من دارم مي پرسم ولي يك اشاره كوچك بكنيد كه چه جوري فايلهاي متعدد تعبيه مي كنند براي يك برنامه.

اگر مديريت صلاح مي دونه اين تاپيك را قفل كنه. چون باعث ميشه كاربران ديگه هم در كنار اين تاپيك ، تاپيك مربوط به سي بزنند. البته فقط نظرم را گفتم ، ناراحت نيستم از اين اوضاع . منم توي اين تاپيك تا وقتي تاپيك مناسب معرفي نشده ، ادامه مي دهم.

به هيئت پيشنهاد ايجاد يك تاپيك به نام (( معرفي دوستان جديد – حرفهاي خودماني – تشكرها – خوش آمد)) در انجمن سي را مي دهم. مي خواستم از خيلي ها تشكر كنم ولي در تاپيكهاي مربوطه درست نبود. و بعضي تماسهاي بين اعضاي فعلي هم در اين تاپيك مي تونه انجام بشه. همين جا از دارك من و يونيكيو بخاطر تمرينات داده شده تشكر مي كنم . روي آنها كار دارم مي كنم و خيلي راه افتادم.
 

saalek110

Well-Known Member
با عرض سلام.
يك چيزي از ويندوز را يادم رفته .
من مي خوام وقتي روي سورس سي كليك ميشه توربو سي باز بشه ولي الان ويژوال سي باز ميشه.
كجا بايد تغييرات لازم را انجام بدم؟
 

***UNIQUE***

Active Member
----------------------------------------------------------------------------
يك چيزي از ويندوز را يادم رفته .
من مي خوام وقتي روي سورس سي كليك ميشه توربو سي باز بشه ولي الان ويژوال سي باز ميشه.
كجا بايد تغييرات لازم را انجام بدم؟
----------------------------------------------------------------------------
در منو tools --> folder options --> fileTypes در اونجا تنظیم کنید فایلهای cpp با چه برنامه ای باز بشن
 

aira

Member
ببخشيد من اگه بخوام تو قسمت آموزش مطلبي رو بزارم بايد چي كار كنم(اموزش سي از پايه)
 
آموزش C از پایه ...

در ابتدای بخش آموزش C از پایه، در انجمن C به این موضوع اشاره شده که کجا باید پست بکنید ...
 
وضعیت
موضوع بسته شده است.

جدیدترین ارسال ها

بالا