stdafx.h
আমি যখন ভিজ্যুয়াল স্টুডিও ২০১০-তে একটি প্রকল্প শুরু করি তখন নামকৃত একটি ফাইল স্বয়ংক্রিয়ভাবে উত্পন্ন হয় I
কি জন্য stdafx.h
ব্যবহার করা হয়? আমি ঠিক এই হেডার ফাইলটি সরিয়ে ফেলি এটা কি ঠিক?
stdafx.h
আমি যখন ভিজ্যুয়াল স্টুডিও ২০১০-তে একটি প্রকল্প শুরু করি তখন নামকৃত একটি ফাইল স্বয়ংক্রিয়ভাবে উত্পন্ন হয় I
কি জন্য stdafx.h
ব্যবহার করা হয়? আমি ঠিক এই হেডার ফাইলটি সরিয়ে ফেলি এটা কি ঠিক?
উত্তর:
সমস্ত সি ++ সংকলক মোকাবেলা করার জন্য একটি গুরুতর পারফরম্যান্স সমস্যা আছে। সি ++ কোড সংকলন একটি দীর্ঘ, ধীর প্রক্রিয়া।
সি ++ ফাইলের শীর্ষে অন্তর্ভুক্ত শিরোনাম সংকলন একটি খুব দীর্ঘ, ধীর প্রক্রিয়া। উইন্ডোজ এপিআই এবং অন্যান্য বৃহত এপিআই লাইব্রেরির অংশ গঠনকারী বিশাল শিরোনামের কাঠামো সংকলন করা একটি খুব , খুব দীর্ঘ, ধীর প্রক্রিয়া। এটি প্রতিটি এবং সিপিপি উত্স ফাইলের জন্য আরও বেশি করে করতে হয় এবং এটি একটি মৃত্যুর হাঁটু।
এটি উইন্ডোজের পক্ষে অনন্য নয় তবে উইন্ডোজের মতো একটি বৃহত এপিআইয়ের বিপক্ষে সংকলন করতে হবে এমন সমস্ত সংকলক দ্বারা सामना করা একটি পুরানো সমস্যা।
মাইক্রোসফ্ট সংকলক প্র্যাকম্পম্পাইল হেডারের নামক একটি সাধারণ কৌশল দ্বারা এই সমস্যাটিকে বাড়িয়ে তুলতে পারে । কৌশলটি বেশ চটুল: যদিও প্রতিটি সিপিপি ফাইল সম্ভাব্য এবং আইনীভাবে প্রতিটি সিপিপি ফাইলের শীর্ষে অন্তর্ভুক্ত শিরোলেখী ফাইলগুলির শৃঙ্খলে কিছুটা পৃথক পৃথক অর্থ দিতে পারে (অন্তর্ভুক্ত হওয়ার আগে বিভিন্ন ম্যাক্রো # সংজ্ঞায়িত করার মতো জিনিসগুলির দ্বারা, বা শিরোনামকে বিভিন্ন ক্রমে অন্তর্ভুক্ত করে), যা প্রায়শই হয় না। বেশিরভাগ সময়, আমাদের কাছে কয়েক ডজন বা শত শত অন্তর্ভুক্ত ফাইল রয়েছে তবে সেগুলি আপনার অ্যাপ্লিকেশনে সমস্ত সিপিপি ফাইল সংকলিত হওয়ার জন্য একই অর্থ লাভ করার উদ্দেশ্যে।
সংস্থাপকটি প্রতিটি সিপিপি ফাইল সংকলন করতে শুরু না করে এবং এর কয়েক ডজন আক্ষরিক অন্তর্ভুক্ত প্রতিবার স্ক্র্যাচ থেকে অন্তর্ভুক্ত করে বিপুল সময় সাশ্রয় করতে পারে।
কৌতুকটি একটি বিশেষ শিরোলেখ ফাইলকে সমস্ত সংকলন শৃঙ্খলার প্রারম্ভিক বিন্দু হিসাবে চিহ্নিত করে, তথাকথিত 'প্রাক্পম্পাইল্ড শিরোলেখ' ফাইল, যা সাধারণত historical তিহাসিক কারণে সাধারণত stdafx.h নামে একটি ফাইল ।
আপনার stdafx.h ফাইলটিতে আপনার যথাযথ ক্রম অনুসারে আপনার সমস্ত বৃহত বিশাল শিরোনামকে তালিকাভুক্ত করুন এবং তারপরে আপনার প্রতিটি সিপিপি ফাইল কোনও শীর্ষবিন্দুতে #include "stdafx.h"
কোনও অর্থবোধক সামগ্রীর আগে শুরু করুন (কেবলমাত্র অনুমোদিত জিনিসটির আগে অনুমোদিত) মন্তব্য)।
এই অবস্থার অধীনে, স্ক্র্যাচ থেকে শুরু করার পরিবর্তে , সংকলক এর মধ্যে সমস্ত কিছু সংকলনের ইতিমধ্যে সংরক্ষিত ফলাফলগুলি থেকে সংকলন শুরু করে stdafx.h
।
আমি বিশ্বাস করি না যে এই কৌশলটি মাইক্রোসফ্ট সংকলকগুলির পক্ষে অনন্য, না আমি মনে করি এটি একটি আসল বিকাশ ছিল।
: মাইক্রোসফট কম্পাইলার, সেটিং যে নিয়ন্ত্রণ precompiled হেডার ব্যবহার কম্পাইলার করার জন্য একটি কমান্ড লাইন আর্গুমেন্ট দ্বারা নিয়ন্ত্রিত হয় জন্য /Yu "stdafx.h"
। আপনি যেমন কল্পনা করতে পারেন, stdafx.h
ফাইলের নামটি কেবল একটি সম্মেলন; আপনি চাইলে নামটি পরিবর্তন করতে পারেন।
ভিজ্যুয়াল স্টুডিও ২০১০-তে, এই বৈশিষ্ট্যটি জিপিআই থেকে নিয়ন্ত্রিত হয় সিপিপি প্রকল্পে রাইট ক্লিক করে, 'সম্পত্তি' নির্বাচন করে এবং "কনফিগারেশন বৈশিষ্ট্যসমূহ \ সি / সি ++ \ প্রাক্পম্পাইল্ড শিরোনাম" এ নেভিগেট করে। ভিজ্যুয়াল স্টুডিওর অন্যান্য সংস্করণগুলির জন্য, জিইউআইতে অবস্থানটি আলাদা হবে।
মনে রাখবেন যে আপনি যদি পূর্বনির্ধারিত শিরোলেখ অক্ষম করেন (বা কোনও প্রকল্পের মাধ্যমে তাদের প্রকল্প চালান যা তাদের সমর্থন করে না), এটি আপনার প্রোগ্রামকে অবৈধ করে না; এর সহজ অর্থ হল যে আপনার সরঞ্জামটি প্রতিবার স্ক্র্যাচ থেকে সমস্ত কিছু সংকলন করবে।
যদি আপনি উইন্ডোজ নির্ভরতা না করে কোনও লাইব্রেরি তৈরি করেন তবে আপনি সহজেই মন্তব্য করতে বা ফাইল #include
থেকে গুলি সরাতে পারেন stdafx.h
। প্রতি সেফ ফাইল সরানোর দরকার নেই, তবে স্পষ্টত আপনি উপরের প্রম্পম্পাইল শিরোনাম সেটিংসটি অক্ষম করে এটিও করতে পারেন।
#include "stdafx.h"
? অবশ্যই, তবে এটি একটি স্ট্যান্ডার্ড # অন্তর্ভুক্ত। "এমএস এক্সটেনশন" অংশটি কেবল একটি সংকলক পারফরম্যান্স অপ্টিমাইজেশন; এটি একটি শিরোলেখ ফাইল থাকার শব্দার্থকে পরিবর্তন করে না যা "stdafx.h" বলে ডাকা হয়। মনে রাখবেন যে আপনি যদি অন্তর্ভুক্তটি সরিয়ে ফেলে থাকেন এবং আপনার কোড stdafx.h- র মাধ্যমে অন্তর্ভুক্ত থাকা কোনও কিছুর উপর নির্ভর করে, আপনাকে সরাসরি এটি অন্তর্ভুক্ত করতে হবে।
#include
উত্স ফাইলে ছিলেন (একই 'প্রিপ্রোসেসর' পদক্ষেপ যা ম্যাক্রোগুলিকে মূল্যায়ন করে)। ফলস্বরূপ মোট ফাইলটি প্রকৃত সংকলককে দেওয়া হয়, যা কখনও কোনও শিরোনাম ফাইলকে পৃথক সত্তা হিসাবে দেখেনি। আপনি কেবলমাত্র শিরোলেখ ফাইলটিতে ঘোষণা রেখেছিলেন কারণ এটিই একটি শিরোলেখ ফাইলটিতে ভাল কাজ করে - এটি একটি প্রচলিত নিয়ম। চেষ্টা করে দেখুন! একটি সম্পূর্ণ প্রোগ্রাম সহ একটি শিরোনাম ফাইল তৈরি করুন, তারপরে এমন একটি উত্স ফাইল তৈরি করুন যা এর জন্য কেবল একটি # অন্তর্ভুক্ত রয়েছে। এটা জরিমানা সংকলন।
এটি একটি "প্রাকম্পম্পাইল্ড শিরোলেখ ফাইল" - stdafx.h এ অন্তর্ভুক্ত থাকা কোনও শিরোনাম পরবর্তী সংকলনের সময় সময় সাশ্রয় করার জন্য প্রাক প্রক্রিয়াজাত হয়। আপনি এখানে এমএসডিএন-এ আরও পড়তে পারেন ।
যদি আপনি ক্রস-প্ল্যাটফর্ম অ্যাপ্লিকেশন তৈরি করে থাকেন তবে আপনার প্রকল্প তৈরি করার সময় "খালি প্রকল্প" পরীক্ষা করুন এবং ভিজ্যুয়াল স্টুডিও আপনার প্রকল্পে কোনও ফাইল রাখবে না।
"স্টাডএফএক্সএইচএইচ" একটি পূর্বনির্ধারিত শিরোলেখ। এটি স্ট্যান্ডার্ড সিস্টেমের জন্য ফাইল অন্তর্ভুক্ত করে এবং প্রকল্প-নির্দিষ্ট জন্য অন্তর্ভুক্ত ব্যবহৃত ফাইলগুলি অন্তর্ভুক্ত থাকে তবে খুব কম সময়ে পরিবর্তিত হয় wh যা সংকলনের সময় এবং অপ্রয়োজনীয় প্রক্রিয়াজাতকরণ হ্রাস করে।
প্রাকম্পম্পাইল্ড শিরোলেখ stdafx.h মূলত মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিওতে ব্যবহৃত হয় যা একবার সংকলিত ফাইলগুলি এবং স্ক্র্যাচ থেকে এটি সংকলন করার প্রয়োজন হয় না তা কম্পাইলারের কাছে জানাতে। আপনি এটি সম্পর্কে আরও পড়তে পারেন
http://www.cplusplus.com/articles/1TUq5Di1/
https://docs.microsoft.com/en-us/cpp/ide/precompiled-header-files?view=vs-2017
আমি নিজেই এটির মধ্যে দৌড়েছি যেহেতু আমি নিজেকে খালি হাড়ের কাঠামো তৈরি করার চেষ্টা করছি তবে ভিজ্যুয়াল স্টুডিও 2017 সালে একটি নতুন উইন 32 প্রোগ্রাম বিকল্প তৈরি করে শুরু করেছি। "Stdafx.h" অপ্রয়োজনীয় এবং এটি সরানো উচিত। তারপরে আপনি আপনার সলিউশন এক্সপ্লোরারে থাকা বোকা "stdafx.h" এবং "stdafx.cpp" মুছে ফেলতে পারবেন পাশাপাশি আপনার প্রকল্পের ফাইলগুলিও। এটির জায়গায়, আপনাকে লাগাতে হবে
#include <Windows.h>
পরিবর্তে.