ترجمه شامل یک فایل منبع C به پرونده دیگر؟ آنلاین از جمله یک فایل منبع C در پرونده دیگر؟ از کد منبع تا اجرایی



می توانید فایل های .C یا .CPP را به درستی در سایر پرونده های منبع قرار دهید. بسته به IDE خود ، معمولاً می توانید با مشاهده خصوصیات پرونده های اصلی که می خواهید شامل شوید ، معمولاً کلیک راست کنید و روی ویژگی ها کلیک کنید ، و علامت انتخاب / بررسی کامپایل / پیوند / حذف از مونتاژ یا موارد دیگر را ببندید. . شاید. یا نمی توانید پرونده را در خود پروژه بگنجانید ، بنابراین IDE حتی از وجود آن اطلاع ندارد و سعی در تدوین آن ندارد. و با makefiles ، شما به سادگی فایل را برای جمع آوری و پیوند دادن در آن قرار نداده اید.

ویرایش: ببخشید ، من جواب را به جای پاسخ های دیگر دادم :(

بسته به محیط ساخت خود (مشخص نخواهید کرد) ، ممکن است دریابید که دقیقاً همانطور که می خواهید کار می کند.

با این وجود ، محیط های زیادی (هم IDE و هم تعداد زیادی Makefile دست ساز) در انتظار کامپایل * .c هستند - اگر این اتفاق بیفتد ، به دلیل وجود نمادهای تکراری ، احتمالاً با خطاهای پیوند دهنده روبرو خواهید شد.

به عنوان یک قاعده کلی ، باید از این عمل اجتناب شود.

اگر کاملاً باید منبع را # وارد کنید (و معمولاً باید از آن اجتناب شود) ، از یک فایل متفاوت برای پرونده استفاده کنید.

فکر کردم می توانم شرایطی را به اشتراک بگذارم که تیم من تصمیم گرفت پرونده های .c را وارد کند. معمار ما عمدتا از ماژول هایی تشکیل شده است که از طریق یک سیستم پیام رسانی جدا می شوند. این پیام دهندگان عمومی هستند و بسیاری از کارمندان محلی ساکن محلی را برای انجام کار خود فرا می خوانند. این مشکل هنگامی ایجاد شد که بخواهیم موارد آزمایشی خود را تحت پوشش قرار دهیم تنها راهاین کد پیاده سازی خصوصی به طور غیر مستقیم از طریق رابط پیام رسان عمومی اجرا شد. با وجود برخی از زانوهای کارگر در پشته ، به نظر می رسد کابوسی برای اطمینان از پوشش مناسب است.

از جمله پرونده های .c به ما این امکان را می داد که به دندانه دار شدن در ماشین برسیم ، ما علاقه مند به آزمایش بودیم.

درج پرونده C در پرونده دیگری قانونی است اما توصیه نمی شود مگر اینکه دقیقاً بدانید که چرا این کار را انجام می دهید و سعی در دستیابی به آن دارید.
من کاملا مطمئن هستم که اگر دلیلی در اینجا ارسال کنید که چرا س questionال شما به جامعه منتقل می شود ، روش مناسب دیگری برای دستیابی به هدف خود پیدا خواهید کرد ("تقریبا" را یادداشت کنید زیرا با توجه به متن ممکن است یک راه حل باشد).

اتفاقاً قسمت دوم سوال را از دست دادم. اگر فایل C در پرونده دیگری باشد و همزمان در پروژه گنجانده شود ، احتمالاً با مشکل نمادهای تکراری روبرو خواهید شد ، چرا اشیا را بهم پیوند می دهید ، یعنی همان عملکرد دو بار تعریف می شود (مگر اینکه ثابت باشند) )

زبان C این نوع # شامل را منع نمی کند ، اما واحد ترجمه حاصل باید همچنان معتبر C باشد.

من نمی دانم از کدام برنامه با فایل .prj استفاده می کنید. اگر از چیزی مانند "ساخت" یا ویژوال استودیویا هر چیز دیگری ، فقط مطمئن شوید که آن را روی لیستی از پرونده هایی تنظیم کرده اید که باید بدون پرونده ای که به طور مستقل قابل جمع آوری نیست ، جمع آوری شود.

شما باید عنوانی مانند این را اضافه کنید

#عبارتند از

توجه: هر دو پرونده باید در یک مکان باشند

می توانید از کامپایلر gcc در linux برای پیوند دادن دو فایل با یک خروجی استفاده کنید. فرض کنید شما دو فایل c دارید ، یکی "main.c" و دیگری "support.c" است. بنابراین دستور اتصال این دو

Gcc main.c support.c -o main.out

این دو پرونده به همان خروجی main.out پیوند داده می شوند. برای اجرای خروجی ، دستور زیر است:

./main.out

اگر از تابع main.c استفاده می کنید که در فایل support.c اعلام شده است ، در اصل باید آن را با استفاده از کلاس ذخیره سازی خارجی نیز اعلام کنید.

پسوند پرونده برای اکثر کامپایلرهای C بی ربط است ، بنابراین کار خواهد کرد.

با این حال ، بسته به تنظیمات پرونده یا پروژه شما ، فایل c موجود ممکن است یک پرونده شی جداگانه ایجاد کند. هنگام پیوند ، این می تواند منجر به نویسه های تعریف شده دوگانه شود.

همین س recentlyال اخیراً یکی از همکارانم که شروع به برنامه ریزی به زبان C می کند از من پرسیده شد. و من فکر کردم که این دلیل خوبی برای اشتراک درک من از این موضوع است. زیرا حتی برنامه نویسان باتجربه نیز همیشه نظرات یکسانی در این مورد ندارند.

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

علی رغم این واقعیت که "تمام حقیقت" در مورد پرونده های h در بخش مربوط به توضیحات پیش پردازنده gcc موجود است ، من به خودم برخی توضیحات و توضیحات را می دهم.

بنابراین ، به معنای واقعی کلمه ، یک فایل هدر (h-file) فایلی است که شامل بیانیه های C و تعاریف کلان برای استفاده در چندین پرونده منبع (فایل های c) است. بگذارید این را نشان دهیم.

به راحتی می توان فهمید که توابع 1 و 2 و همچنین ماکرو 2 در هر دو پرونده ذکر شده اند. و از آنجا که شامل پرونده های هدر ، همان نتایج کپی کردن محتوا در هر فایل C را ایجاد می کند ، می توانیم موارد زیر را انجام دهیم:

بنابراین ، ما به راحتی قسمت مشترک را از بین دو فایل انتخاب کرده و در پرونده هدر قرار می دهیم.
اما آیا در این حالت فایل هدر یک رابط است؟

  • اگر ما نیاز به استفاده از عملکردهایی داریم که توابع 1 و 2 در جای دیگر پیاده سازی می کنند ، بله
  • اگر ماکرو 2 فقط برای استفاده در پرونده های Unit1.c و Unit2.c در نظر گرفته شده باشد ، پس جایی در پرونده رابط ندارد
علاوه بر این ، آیا برای پیاده سازی رابط تعریف شده در پرونده هدر ، آیا واقعاً به دو پرونده C نیاز داریم؟ یا یکی کافی است؟
پاسخ به این س onال به جزئیات اجرای توابع رابط و محل اجرای آنها بستگی دارد. به عنوان مثال ، اگر نمودارها را با جزئیات بیشتری تنظیم کنید ، هنگام اجرای توابع رابط در پرونده های مختلف ، می توانید یک نوع مختلف را تصور کنید:


این پیاده سازی منجر به انسجام کد بالا ، آزمون پذیری کم و پیچیدگی می شود. استفاده مجددچنین ماژول هایی
برای اینکه چنین مشکلاتی نداشته باشم ، من همیشه فایل C و فایل هدر را به عنوان یک ماژول در نظر می گیرم. که در آن،
  • پرونده هدر فقط شامل آن دسته از توابع ، انواع ، ماکرو است که بخشی از رابط این ماژول هستند.
  • پرونده C ، به نوبه خود ، باید شامل پیاده سازی کلیه توابع اعلام شده در پرونده h و همچنین انواع خصوصی ، ماکروها و توابع مورد نیاز برای پیاده سازی رابط باشد.
بنابراین ، اگر من فرصتی برای اجرای کدی داشتم که با نمودار بالا مطابقت دارد ، سعی می کنم موارد زیر را بدست آورم (انتهای _s و _h در نام پرونده ها به دلیل عدم امکان استفاده از یک دوره در ابزاری که من اضافه می کنم ، اضافه می شوند) برای ایجاد نمودار استفاده می شود):


نمودار نشان می دهد که در واقع ما با دو ماژول مستقل روبرو هستیم که هر یک از آنها رابط کاربری خاص خود را به صورت یک فایل هدر دارند. این امکان را می دهد که فقط از رابطی که در این مورد خاص واقعاً مورد نیاز است استفاده کنید.به علاوه ، این ماژول ها می توانند به طور مستقل از یکدیگر آزمایش شوند.
خواننده احتمالاً متوجه شده است که ماکرو 2 از پرونده هدر دوباره به عنوان یک کپی در هر دو پرونده C برگردانده شده است. البته نگهداری از آن چندان راحت نیست. اما ساخت این بخش ماکرو از رابط کاربری نیز صحیح نیست.
در چنین مواردی ، ترجیح می دهم یک پرونده هدر جداگانه تهیه کنم که شامل انواع و ماکروهای مورد نیاز چندین پرونده C باشد.

امیدوارم من توانسته باشم آن اشخاصی را که باید در پرونده های هدر قرار گیرند شناسایی کنم. و همچنین ، برای نشان دادن تفاوت بین رابط ها و پرونده های حاوی اظهارات و ماکرو مورد نیاز چندین پرونده C.

از توجه شما به مطالب متشکرم

فایل های منبع

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

فایل منبع می تواند شامل هر ترکیب کاملی از دستورالعمل ها ، دستورالعمل های کامپایلر ، اعلامیه ها و تعاریف باشد. یکپارچگی به معنای این است که اشیایی مانند تعریف عملکرد ، ساختار داده ها یا مجموعه ای از دستورالعمل های مربوط به تدوین مشروط باید کاملاً در یک پرونده قرار بگیرند ، یعنی نمی توانند در یک پرونده شروع شوند ، اما در پرونده دیگر ادامه می یابند.

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

دستورالعملهای کامپایلر معمولاً فقط در بخشهای خاصی از پرونده منبع اعمال می شوند. اقدامات خاص کامپایلر ، مشخص شده توسط بخشنامه ها ، با اجرای خاص کامپایلر C تعیین می شود.

در مثال زیر ، برنامه منبع از دو پرونده منبع تشکیل شده است. کارکرد اصلیو حداکثردر پرونده های جداگانه ارائه شده است. تابع اصلیاز تابع استفاده می کند حداکثردر حین اجرای آن.

/ * پرونده منبع 1 - عملکرد اصلی * /

extern int max (int ، int) ؛ / * اعلام عملکرد

اصلی () / * تعریف عملکرد * /

int w = یک ، x = دو ، y = سه ؛

/ * پرونده منبع 2 - حداکثر عملکرد * /

int max (a، b) / * تعریف عملکرد * /

در فایل منبع اول ، عملکرد حداکثراعلام شده اما تعریف نشده است. این اعلامیه عملکرد را موقت می نامند. این به کامپایلر اجازه می دهد قبل از تعریف عملکرد ، فراخوانی عملکرد را کنترل کند. تعریف عملکرد اصلیشامل تماس های عملکردی است حداکثر.

خطوطی که با # شروع می شوند ، دستورالعمل های پیش پردازنده هستند. این دستورالعمل ها به پیش پردازنده می گویند که باید شناسه های ONE ، TWO ، THREE را در پرونده منبع اول با مقادیر مربوطه جایگزین کند. این دستورالعمل ها در پرونده منبع دوم قرار ندارند.

برنامه نویسی Kozlova Irina Sergeevna

27. پرونده های منبع C ++

27. پرونده های منبع C ++

یک برنامه C ++ اغلب شامل عدد بزرگپرونده های منبع ، که هر کدام حاوی توصیف انواع ، توابع ، متغیرها و ثابت ها هستند. برای اینکه یک نام در پرونده های منبع مختلف مورد استفاده قرار بگیرد ، باید به عنوان خارجی توصیف شود. برای مثال:

extern double sqrt (دو برابر)؛ جریان خارجی سین؛

ساده ترین راه برای اطمینان از سازگاری فایل های منبع قرار دادن همان توضیحات در پرونده های جداگانه ای به نام پرونده های هدر (یا سربرگ) است و سپس قرار دادن ، کپی کردن این پرونده های هدر در تمام پرونده هایی که به این توصیفات نیاز است. به عنوان مثال ، اگر توضیحات sqrt در پرونده هدر به صورت استاندارد قرار دارد توابع ریاضی math.h و باید استخراج شود ریشه دوماز 4 ، شما باید برنامه را اعمال کنید:

از آنجا که پرونده های هدر معمولی از تعداد زیادی فایل منبع تشکیل شده اند ، فاقد توصیفاتی هستند که نباید تکرار شوند.

برای مثال ، در نام شامل پرونده ای در براکت های زاویه ای ، به پرونده ای با این نام در فهرست استاندارد (معمولاً / usr / شامل / CC) اشاره دارد. پرونده هایی که در جای دیگر ذخیره شده اند با استفاده از نام هایی که در نقل قول های مضاعف محصور شده اند ، ارجاع می شوند مثلا:

# شامل "math1.h" #include "/usr/bs/math2.h"

شامل math1.h از فهرست کاربر فعلی و math2.h از / usr / bs خواهد بود.

بیایید نشان دهیم چگونه می توانیم نوع جریان خروجی جریان را تعیین کنیم. به منظور سادگی ، فرض کنید که نوع بافر streambuf باشد. نوع streambuf در همان مکان تعریف واقعی از ostream تعریف شده است. مقداری از نوع تعریف شده توسط کاربر ، داده هایی را که برای نمایش یک شی of از آن نوع و تعداد زیادی عملیات برای کار با آن اشیا مورد نیاز است ، مشخص می کند. این تعریف از دو قسمت تشکیل شده است: یک قسمت خصوصی که شامل اطلاعاتی است که فقط توسط توسعه دهنده آن استفاده می شود و یک بخش عمومی است که رابط نوع با کاربر است.

از کتاب Windows Programs and Files نویسنده Klimov A

پرونده های DBX پرونده ها با سوابق برنامه ذخیره سازی پسوند DBX چشم انداز اکسپرس... این پرونده ها با نام Message Bank حاوی نامه ها ، پیام های گروه خبری و غیره هستند. در صورت تمایل ، می توانید این پرونده ها را در یک حافظه ذخیره سازی کپی کنید تا داده ها را به رایانه دیگری منتقل کنید.

از کتاب برنامه نویسی نویسنده کوزلووا ایرینا سرگئونا

پرونده های INF در این مقاله ، بررسی خواهیم کرد که یک فایل INF چیست ، چگونه می توان از آن برای کار با سایر پرونده ها و رجیستری ، ایجاد میانبرها ، اجرای برنامه ها و غیره استفاده کرد. همانطور که می دانید ، یک محصول نرم افزاری کم و بیش معمولاً نیاز دارد ویژه

از کتاب Win2K FAQ (v. 6.0) نویسنده Shashkov Alexey

12. نظرات. فایلهای منبع یک نظر مجموعه ای از نویسه ها است که توسط کامپایلر نادیده گرفته می شود. اما در این مجموعهشخصیت ها تحت محدودیت های خاصی هستند. در یک مجموعه کاراکتر که نماینده یک نظر است ، نمی تواند وجود داشته باشد شخصیت های خاصکه

از کتاب Microsoft Visual C ++ و MFC. برنامه نویسی برای ویندوز 95 و ویندوز NT نویسنده فرولوف الكساندر ویاچسلاوویچ

27. پرونده های منبع C ++ یک برنامه C ++ غالباً شامل تعداد زیادی فایل منبع است که هر کدام حاوی توصیف انواع ، توابع ، متغیرها و ثابت ها هستند. به طوری که می توان از این نام در پرونده های مختلف منبع برای ارجاع به یک شی خاص استفاده کرد

از کتاب UNIX: تعامل فرآیند نویسنده استیونز ویلیام ریچارد

پرونده ها با تقاضای عمومی ، بخش مربوط به پرونده های مفید برای W2k را باز کنید. این بخش از دو قسمت تشکیل شده است ، قسمت اول وصله های رسمی مایکروسافت (نه همه ، بلکه فقط مواردی است که به نظر ما مهمترین است) ، و قسمت دوم ، که شامل تمام پرونده های ذکر شده در FAQ ، فقط برنامه های کاربردی ،

از کتاب زبان برنامه نویسی C برای کامپیوتر شخصی نویسنده Bochkov S.O.

از کتاب KOMPAS-3D برای دانش آموزان و دانش آموزان. نقشه کشی ، علوم کامپیوتر ، هندسه نویسنده بولشاکوف ولادیمیر

از کتاب ویژگی های مستند و ناشناخته ویندوز XP نویسنده کلیمنکو رومن الکساندروویچ

فایل های منبع متن یک برنامه C را می توان به چندین پرونده منبع تقسیم کرد. یک فایل منبع یک فایل متنی است که شامل کل برنامه یا بخشی از آن است. هنگام تدوین یک برنامه منبع ، هر یک از پرونده های منبع تشکیل دهنده آن است

از کتاب برنامه نویسی برای لینوکس. رویکرد حرفه ای نویسنده میچل مارک

ضمیمه 2 داده های اولیه برای مدل سازی جامد

از کتاب UNIX: در حال توسعه برنامه های شبکه ای نویسنده استیونز ویلیام ریچارد

ضمیمه 3 داده های اولیه برای مدل سازی خانواده

برگرفته از کتاب ویکی-دولت [چگونه فناوری می تواند قدرت را بهتر ، دموکراسی قوی تر ، شهروندان را با قدرت تر] نویسنده نوک بت

پرونده های CPL از چند پاراگراف قبلی ، تقریباً تمام محاسبات نظری لازم برای کار با برنامه rundll32.exe را فرا گرفته اید. اکنون ما آن فرصت هایی را لیست می کنیم که این برنامهمی تواند کاربر را فراهم کند. بیایید با توصیف شروع کنیم

برگرفته از کتاب UNIX - The Universal Programming Environment توسط پایک راب

1.5.4. منبع لینوکس - سیستم با متن باز، مگه نه؟ قاضی اصلی که نحوه کار سیستم را تعیین می کند منبعخود سیستم خوشبختانه برای ما ، این برنامه به صورت رایگان در دسترس است. یک توزیع لینوکس موجود ممکن است شامل کد منبع برای کل سیستم و همه باشد

از کتاب نویسنده

A.3.5. کد منبع برنامه ماشین حساب Listing A.3 متن برنامه ای را نشان می دهد که مقادیر عبارات postfix را محاسبه می کند. (calculator.c) قسمت اصلی برنامه ماشین حساب / * محاسبات در قالب unary. * // * ورودی تک خطی به برنامه

از کتاب نویسنده

ضمیمه D کدهای مختلف منبع D.1. پرونده سرآیند unp.h تقریباً همه برنامه های این کتاب با درج پرونده هدر unp.h که در لیست D.1 نشان داده شده است ، شروع می شود. این فایل شامل تمام پرونده های استاندارد هدر سیستم است که برای کار کردن لازم است.

از کتاب نویسنده

از کتاب نویسنده

ضمیمه 3 متن های اصلی محاسبه گر hoc این پرونده ها حاوی تمام کدهای "محیط برنامه نویسی Unix" ، توسط برایان کرنیگان و راب پایک است (Prentice Hall، 1984، ISBN 0-13-937681-X). یک توزیع جداگانه hoc6 شامل هرگونه اصلاحاتی است که ما در آن اعمال کرده ایم. نسخه موجود در این فایل از کتاب است. Copyright © Lucent Technologies، 1997. کلیه حقوق محفوظ است اجازه استفاده ، کپی ، اصلاح و توزیع این نرم افزار و مستندات آن برای

پشتیبانی. مایکروسافت

وقتی پرونده های اصلی را در Visual C ++ اصلاح می کنید و آنها را ذخیره می کنید ، خطوط باید با ترکیب "CR / LF" [بازگشت کالسکه ، تغذیه خط] خاتمه یابد. در سیستم های UNIX ، خطوط با "LF" خاتمه می یابند. بنابراین ، هنگام مشاهده پرونده های تغییر یافته در گروه ویندوز در سیستم های UNIX ، ممکن است نویسه های "^ M" زیادی را در رشته ها مشاهده کنید. این فقط زمانی اتفاق می افتد که استفاده از ویرایشگر نمی داند چگونه تعبیر کند پرونده ویندوز... Visual C ++ می تواند پرونده ها را در نزدیکی خطوطی که به ایجاد UNIX LF ختم می شوند ، باز کند. اگر این فایل را تغییر دهید و آن را از Visual C ++ ذخیره کنید و سپس در آن ذخیره می شود قالب ویندوز(CR / LF را مشاهده خواهید کرد و نه LF که قبلاً روی سیستم بود).

در این مقاله مراحل ذخیره فایل اصلاح شده ایجاد شده در سیستم عامل ویندوز با قالبی قابل استفاده در سیستم های UNIX شرح داده شده است.

توجه داشته باشید: Visual C ++. NET IDE شامل توابع موجود برای ذخیره یک فایل در قالب UNIX است. در IDE ، پرونده را با آن ذخیره کنید ذخیره به عنوان...، ذخیره را از لیست کشویی انتخاب کنید ذخیره با رمزگذاری ...، و فشار دهید آره... String Encoding را از لیست کشویی انتخاب کنید UNIX (LF)و سپس دکمه را فشار دهید خوب.

میتواند مورد استفاده قرار گیرد مراحل بعدیبرای ایجاد یک برنامه کنسول Win32 پروژه ای که یک فایل حاوی "CR / LF" را به خاتمه خط برای "LF" تبدیل می کند:

  1. برای ایجاد یک پروژه خالی جدید به نام DOS2UNIX با استفاده از برنامه های کنسول Win32.
  2. از فایلمنو ، دکمه را فشار دهید جدیدو سپس دکمه را فشار دهید فایل هازبانه
  3. لطفا انتخاب کنید پرونده منبع C / C ++و نام فایل جدید DOS2UNIX.cpp را وارد کنید.
  4. کد زیر را در DOS2UNIX.cpp جایگذاری کنید:

    #عبارتند از #عبارتند از #عبارتند از استفاده از namespace std؛ int main (int argc، char * argv) (if (argc! = 2) (cout<< "Please specify: dos2unix filename" << endl; return 0; } char ch; char temp="\0"; //Open the file for reading in binarymode. ifstream fp_read(argv, ios_base::in \ / ios_base::binary); sprintf(temp, "%s.temp", argv); //Create a temporary file for writing in the binary mode. This //file will be created in the same directory as the input file. ofstream fp_write(temp, ios_base::out \ / ios_base::trunc \ / ios_base::binary); while(fp_read.eof() != true) { fp_read.get(ch); //Check for CR (carriage return) if((int)ch == 0x0D) continue; if (!fp_read.eof())fp_write.put(ch); } fp_read.close(); fp_write.close(); //Delete the existing input file. remove(argv); //Rename the temporary file to the input file. rename(temp, argv); //Delete the temporary file. remove(temp); return 0; }

  5. از ساختمانمنو ، دکمه را فشار دهید ایجاد DOS2UNIX.exeبرای ایجاد یک فایل EXE.

شاید لازم باشد این فایل exe را بررسی کنید و ببینید آیا به درستی کار می کند یا خیر. برای این کار ، هنگام انتخاب پرونده را در ویرایشگر باینری Visual C ++ باز کنید باز کندر یک گروه فایلبا انتخاب DOS2UNIX.ex ، تنظیمات ، منو را انتخاب کنید باز کردن به عنوانبه کی دودوییو سپس کلیک کنید باز کن... به عنوان مثال ، اگر پرونده حاوی "hellocrlfworld" باشد ، پرونده داده دودویی (هگزادسیمال) به این شکل است:

48 65 6 C 6 C 6F 0 D 0A 57 6F 72 6 C 64

این معادل است با:

سلام
صلح

در خط فرمان ، dos2unix.exe را اجرا کنید ... بعد ، پرونده را در ویرایشگر باینری Visual C ++ باز کنید. مشاهده خواهید کرد که 0x0d در حال حذف هستند. تا زمانی که پرونده را اصلاح نکنید و آن را در Visual C ++ 0x0d ذخیره نکنید ، ظاهر نمی شود.

این را می توان همراه با Visual C ++ Automation Model برای اتوماسیون کل مراحل استفاده کرد. برای فراخوانی این ابزار می توان ماکروهای ساده اسکریپت Microsoft Visual Basic را نوشت ، اما ابتدا باید این ابزار را اضافه کنید سرویسمنو به این شکل است:

  1. از سرویسمنو ، دکمه را فشار دهید سفارشی سازیو سپس دکمه را فشار دهید سرویسزبانه
  2. نامی مانند DOS2UNIX را مشخص کنید و مسیر کامل فایل Dos2unix.exe را در آن ارائه دهید تیمقسمت ویرایش
  3. آرگومان را روی $ (Filename) $ (FileExt) تنظیم کنید.
  4. فهرست منبع $ (WkspDir) را مشخص کنید (مسیر خود را ارائه دهید).

برای آزمایش برنامه ، پرونده را در ویرایشگر Visual C ++ باز کنید و سپس از آن استفاده کنید سرویسمنوی راه اندازی DOS2UNIXبه معنای. خواهید دید که پرونده باز شده در ویرایشگر همه نویسه های CR آن حذف شده است.

اگر می خواهید این فرآیند را خودکار کنید ، این کار را انجام دهید تا هر زمان که یک پرونده باز را در ویرایشگر Visual C ++ ذخیره کردید ، از ابزار DOS2UNIX.exe برای حذف 0x0d s فراخوانی شده و سپس از ماکرو VBScript زیر استفاده کنید:

"این رویداد هر بار که سند در ویرایشگر VC ++ ذخیره می شود شلیک می شود. Sub Application_DocumentSave (theDocument)" با این کار ابزار کاربر در منوی Tools فراخوانی می شود. "بسته به آنچه که دارید تعداد را تغییر دهید. به طور پیش فرض فقط" 6 ابزار در زیر فهرست ابزارها دارید ، بنابراین ابزار DOS2UNIX هفتمین ابزار خواهد بود. ExecuteCommand "UserTool7" End Sub

این کد VBScript فقط در صورتی کار می کند که پرونده ها را در Visual C ++ Editor باز کرده باشید. این تنها راه فراخوانی پرونده exe از ماکرو VBScript است (ماکرو VBScript نمی تواند از پارامترها عبور داده شود). می توانید به جای آن بنویسید و انعطاف پذیرتر خواهد بود. بدون نیاز به افزودن ابزار ، از طریق این افزونه با ابزار "DOS2UNIX.exe" تماس بگیرید سرویسمنو.

در Visual C ++ با استفاده از ماکرو VBScript ارائه شده:

  1. یک پرونده موجود با پسوند .dsm را باز کنید یا یک فایل ایجاد کنید.
  2. کدی را که قبلاً در پرونده ارائه شده است جایگذاری کنید.
  3. در Visual C ++ ، این مراحل را دنبال کنید.
    1. از سرویسمنو ، دکمه را فشار دهید سفارشی سازی.
    2. روی دکمه کلیک کنید پرونده های ماکرو و افزودنیزبانه
    3. روی دکمه کلیک کنید بررسی اجمالیفایل .dsm حاوی ماکرو را بارگیری کنید. یک بار در پرونده .dsm در انتخاب شد بررسی اجمالیدر جعبه گفتگو ، پرونده در ظاهر می شود افزودنیها و ماکروهالیستی از فایلها با استفاده از کادر تأیید انتخاب شده در کنار آن.
    4. روی دکمه کلیک کنید نزدیکادامه.

اکنون اگر پرونده را در ویرایشگر Visual C ++ باز کنید و از پرونده ذخیره کنید فایلمنوی فراخوانی شده توسط ماکرو و همه 0x0d از پرونده باز حذف می شود. از آنجا که این بر روی هر فایلی که از این پس نگه دارید تأثیر خواهد گذاشت و برای هر پروژه ای که در آینده باز می کنید اعمال می شود ، حتماً ماکرو را از کار بیاندازید سرویسمنو با استفاده از سفارشی سازی(علامت مربع کنار ماکرو را بردارید).