Precompiled header
কম্পিউটার প্রোগ্রামিং-এ, একটি পূর্ব-সংকলিত হেডার (পি. সি. এইচ) হল একটি (সি বা সি + +) হেডার ফাইল যা একটি মধ্যবর্তী আকারে সংকলিত হয় যা কম্পাইলারের জন্য প্রক্রিয়া করার জন্য দ্রুততর। পূর্ব-সংকলিত হেডারগুলির ব্যবহার সংকলনের সময়কে উল্লেখযোগ্যভাবে হ্রাস করতে পারে, বিশেষত যখন বড় হেডার ফাইল, হেডার ফাইলগুলিতে প্রয়োগ করা হয় যার মধ্যে অন্যান্য অনেক হেডার ফাইল অন্তর্ভুক্ত থাকে, বা হেডার ফাইল যা অনেক অনুবাদ ইউনিটে অন্তর্ভুক্ত থাকে। যুক্তিসঙ্গত সি এবং সি + + প্রোগ্রামিং ভাষাগুলিতে, একটি হেডার ফাইল হল এমন একটি ফাইল যার পাঠ্য স্বয়ংক্রিয়ভাবে সি প্রিপ্রসেসর দ্বারা উৎস ফাইলে একটি প্রিপ্রসেসর নির্দেশাবলী ব্যবহার করে অন্য উৎস ফাইলে অন্তর্ভুক্ত করা যেতে পারে। হেডার ফাইলগুলিতে কখনও কখনও খুব বড় পরিমাণে সোর্স কোড থাকতে পারে (উদাহরণস্বরূপ, মাইক্রোসফ্ট উইন্ডোজ এবং ওএস এক্স-এ যথাক্রমে হেডার ফাইল windows.h এবং কোকো/কোকো. এইচ)। এটি বিশেষত বড় "হেডার" গ্রন্থাগারগুলির আবির্ভাবের ক্ষেত্রে সত্য যা আইগেন গণিত গ্রন্থাগার এবং বুস্ট সি + + গ্রন্থাগারগুলির মতো টেমপ্লেটগুলির ব্যাপক ব্যবহার করে। এগুলি প্রায় সম্পূর্ণরূপে হেডার ফাইল হিসাবে লেখা হয় যা ব্যবহারকারী #includes, রানটাইমে সংযুক্ত হওয়ার পরিবর্তে। সুতরাং, প্রতিবার ব্যবহারকারী যখন তাদের প্রোগ্রাম সংকলন করে, তখন ব্যবহারকারী মূলত অসংখ্য হেডার লাইব্রেরিও পুনরায় সংকলন করে। (এগুলি শেয়ারড অবজেক্ট বা নন-হেডার লাইব্রেরিতে ডায়নামিক লিঙ্ক লাইব্রেরিতে প্রাক-সংকলিত হবে।) সংকলনের সময় কমাতে, কিছু সংকলক হেডার ফাইলগুলিকে এমন একটি ফর্মে সংকলিত করার অনুমতি দেয় যা সংকলকের প্রক্রিয়া করার জন্য দ্রুততর। এই মধ্যবর্তী ফর্মটি একটি পূর্ব-সংকলিত হেডার হিসাবে পরিচিত, এবং সাধারণত এক্সটেনশন. pch বা অনুরূপ নামে একটি ফাইলে রাখা হয়, যেমন জিএনইউ কম্পাইলার সংগ্রহের অধীনে. gch। ব্যবহার উদাহরণস্বরূপ, একটি সি + + ফাইল source.cpp দেওয়া হয়েছে যার মধ্যে রয়েছে header.hpp:// header.hpp.// source.cpp #include "header.hpp"। প্রাক-সংকলিত হেডার বৈশিষ্ট্য চালু করে প্রথমবার source.cpp সংকলন করার সময়, সংকলক একটি পূর্ব-সংকলিত হেডার, header.pch তৈরি করবে। পরের বার, যদি এই হেডারের টাইমস্ট্যাম্প পরিবর্তন না হয়, তবে সংকলক header.hpp সম্পর্কিত সংকলন পর্যায়টি এড়িয়ে যেতে পারে এবং পরিবর্তে সরাসরি header.pch ব্যবহার করতে পারে। সাধারণ বাস্তবায়ন মাইক্রোসফ্ট ভিজ্যুয়াল সি এবং সি + + মাইক্রোসফ্ট ভিজ্যুয়াল সি + + (সংস্করণ 6 এবং নতুন) কেবল শিরোনাম নয়, যে কোনও কোড প্রাক-সংকলন করতে পারে। এটি দুটি উপায়ে করা যেতে পারেঃ হয় এমন একটি ফাইলের সাথে সমস্ত কোড প্রাক-সংকলন করা যার নাম/Ycfilename বিকল্পের সাথে মেলে অথবা (যখন/Yc কোনও ফাইলের নাম ছাড়াই নির্দিষ্ট করা হয়) কোডে #pragma hdrstop-এর প্রথম ঘটনা পর্যন্ত সমস্ত কোড প্রাক-সংকলন করা পূর্ব-সংকলিত আউটপুট/Yc বিকল্পে দেওয়া ফাইলের নামের নামে একটি ফাইলে সংরক্ষণ করা হয়, একটি. pch এক্সটেনশন সহ, অথবা/Fpfilename বিকল্প দ্বারা সরবরাহ করা নাম অনুযায়ী একটি ফাইলে। / ইউ বিকল্পটি,/ওয়াইসি বিকল্পের অধীনস্থ, যদি একসাথে ব্যবহার করা হয়, তবে সংকলককে এই ধরনের ফাইল থেকে ইতিমধ্যে পূর্ব-সংকলিত কোড ব্যবহার করতে বাধ্য করে। pch.h (ভিজ্যুয়াল স্টুডিও 2017 এর আগে stdafx.h নামে পরিচিত) মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও আইডিই উইজার্ড দ্বারা তৈরি একটি ফাইল, যা স্ট্যান্ডার্ড সিস্টেম এবং প্রকল্প নির্দিষ্ট উভয়ই বর্ণনা করে যা ঘন ঘন ব্যবহৃত হয় তবে খুব কমই পরিবর্তিত হয়। stdafx.h-এর এ. এফ. এক্স মানে অ্যাপ্লিকেশন ফ্রেমওয়ার্ক এক্সটেনশন। এ. এফ. এক্স ছিল মাইক্রোসফট ফাউন্ডেশন ক্লাসের (এম. এফ. সি) মূল সংক্ষিপ্ত রূপ। যদিও 2017 সংস্করণের আগে এমএসভিসি প্রকল্পগুলিতে ডিফল্টভাবে stdafx.h নামটি ব্যবহার করা হয়েছিল, তবে যে কোনও বিকল্প নাম ম্যানুয়ালি নির্দিষ্ট করা যেতে পারে। সামঞ্জস্যপূর্ণ সংকলকগুলি সামগ্রিক সংকলনের সময় কমাতে এই ফাইলটি আগে থেকে সংকলন করবে। ভিজ্যুয়াল সি + + উৎস ফাইলের #include "pch.h"-এর আগে কিছু সংকলন করবে না, যদি না সংকলন বিকল্প/ইউ 'pch.h' চেক করা না থাকে (ডিফল্টরূপে); এটি ধরে নেয় যে সেই লাইনটি সহ উৎসের সমস্ত কোড ইতিমধ্যে সংকলিত হয়েছে। জিসিসি প্রাক-সংকলিত শিরোনামগুলি জিসিসি (3.4 এবং নতুন)-তে সমর্থিত। জিসিসির পদ্ধতিটি ভিসি এবং সামঞ্জস্যপূর্ণ সংকলকগুলির অনুরূপ। জিসিসি ". gch" প্রত্যয় ব্যবহার করে হেডার ফাইলগুলির পূর্ব-সংকলিত সংস্করণগুলি সংরক্ষণ করে। একটি উৎস ফাইল সংকলন করার সময়, সংকলক এই ফাইলটি একই ডিরেক্টরিতে রয়েছে কিনা তা পরীক্ষা করে এবং সম্ভব হলে এটি ব্যবহার করে। জিসিসি শুধুমাত্র পূর্ব-সংকলিত সংস্করণটি ব্যবহার করতে পারে যদি একই কম্পাইলার সুইচগুলি হেডারটি কম্পাইল করার সময় সেট করা থাকে এবং এটি সর্বাধিক একটি ব্যবহার করতে পারে। উপরন্তু, শুধুমাত্র প্রি-প্রসেসর নির্দেশাবলী প্রাক-সংকলিত হেডারের আগে স্থাপন করা যেতে পারে (কারণ এটি যে কোনও সংকলনযোগ্য কোডের আগে অন্য একটি স্বাভাবিক হেডারের মাধ্যমে প্রত্যক্ষ বা পরোক্ষভাবে অন্তর্ভুক্ত করা আবশ্যক)। জিসিসি স্বয়ংক্রিয়ভাবে বেশিরভাগ হেডার ফাইলকে তাদের এক্সটেনশন দ্বারা সনাক্ত করে। তবে, যদি এটি ব্যর্থ হয় (যেমন। অ-মানক হেডার এক্সটেনশনের কারণে), জিসিসি ফাইলটিকে হেডার হিসাবে বিবেচনা করে তা নিশ্চিত করতে-x সুইচ ব্যবহার করা যেতে পারে। ক্ল্যাং সংকলক 2009 সালের ক্ল্যাং 2.5/এলএলভিএম 2.5-এ পিসিএইচ-এর জন্য সমর্থন যোগ করেছে। কম্পাইলার ইনপুট সোর্স কোডকে টোকেনাইজ করে এবং হেডারগুলির সিনট্যাক্টিক এবং শব্দার্থিক বিশ্লেষণ সম্পাদন করে, কম্পাইলারের অভ্যন্তরীণ উত্পন্ন বিমূর্ত সিনট্যাক্স ট্রি (এ. এস. টি) এবং প্রতীক টেবিলকে একটি পূর্ব-সংকলিত হেডার ফাইলে লিখে দেয়। ক্ল্যাং-এর পূর্ব-সংকলিত হেডার স্কিম, কিছু উন্নতি সহ যেমন একটি পূর্ব-সংকলিত হেডারের অন্যটিকে রেফারেন্স করার ক্ষমতা, অভ্যন্তরীণভাবে ব্যবহৃত, পূর্ব-সংকলিত হেডার, এর মডিউল পদ্ধতির ভিত্তি তৈরি করে। এটি একই বিটকোড ফাইল ফরম্যাট ব্যবহার করে যা এল. এল. ভি. এম দ্বারা নিযুক্ত, কমন অবজেক্ট ফাইল ফরম্যাট বা এক্সটেনসিবল লিঙ্কিং ফরম্যাট ফাইলের মধ্যে ক্ল্যাং-নির্দিষ্ট বিভাগে আবদ্ধ। সি + + নির্মাতা ডিফল্ট প্রকল্প বিন্যাসে, সি + + নির্মাতা সংকলক সুস্পষ্টভাবে একটি উৎস মডিউল দ্বারা অন্তর্ভুক্ত সমস্ত শিরোনামের জন্য পূর্ব-সংকলিত শিরোনাম তৈরি করে যতক্ষণ না লাইন #pragma এইচডিআরস্টপ পাওয়া যায়। সম্ভব হলে প্রকল্পের সমস্ত মডিউলের জন্য পূর্ব-সংকলিত শিরোনামগুলি ভাগ করা হয়। উদাহরণস্বরূপ, ভিজ্যুয়াল কম্পোনেন্ট লাইব্রেরির সাথে কাজ করার সময়, প্রথমে vcl.h হেডার অন্তর্ভুক্ত করা সাধারণ, যেখানে সাধারণত ব্যবহৃত বেশিরভাগ ভি. সি. এল হেডার ফাইল থাকে। এইভাবে, পূর্ব-সংকলিত হেডারটি সমস্ত প্রকল্প মডিউল জুড়ে ভাগ করা যেতে পারে, যা নাটকীয়ভাবে নির্মাণের সময়কে হ্রাস করে। উপরন্তু, সি + + বিল্ডারকে ভিজ্যুয়াল সি + + দ্বারা প্রদত্ত পদ্ধতির অনুরূপ একটি নির্দিষ্ট হেডার ফাইলকে পূর্ব-সংকলিত হেডার হিসাবে ব্যবহার করার জন্য যন্ত্রযুক্ত করা যেতে পারে। সি + + বিল্ডার 2009 একটি "প্রাক-সংকলিত হেডার উইজার্ড" চালু করেছে যা অন্তর্ভুক্ত হেডার ফাইলগুলির জন্য প্রকল্পের সমস্ত উৎস মডিউলগুলি বিশ্লেষণ করে, তাদের শ্রেণীবদ্ধ করে (অর্থাৎ। হেডার ফাইলগুলি বাদ দেয় যদি সেগুলি প্রকল্পের অংশ হয় বা একটি অন্তর্ভুক্ত গার্ড না থাকে) এবং নির্দিষ্ট ফাইলগুলির জন্য স্বয়ংক্রিয়ভাবে একটি পূর্ব-সংকলিত হেডার তৈরি করে এবং পরীক্ষা করে। একটি প্রিটোকেনাইজড হেডার (পিটিএইচ) হল একটি হেডার ফাইল যা একটি আকারে সংরক্ষিত থাকে যা আভিধানিক বিশ্লেষণের মাধ্যমে চালানো হয়েছে, তবে এতে কোনও শব্দার্থিক ক্রিয়াকলাপ করা হয়নি। পিটিএইচ সমর্থন করার আগে পিটিএইচ ক্ল্যাং-এ উপস্থিত ছিল এবং জিসিসি-র একটি শাখাতেও এটি পরীক্ষা করা হয়েছে। একটি সম্পূর্ণ পি. সি. এইচ পদ্ধতির তুলনায়, পি. টি. এইচ-এর ভাষা (এবং উপভাষা) স্বাধীনতার সুবিধা রয়েছে, কারণ আভিধানিক বিশ্লেষণ সি-পারিবারিক ভাষাগুলির জন্য অনুরূপ, এবং স্থাপত্যের স্বাধীনতা, কারণ বিভিন্ন লক্ষ্য স্থাপত্যের জন্য সংকলন করার সময় টোকেনের একই প্রবাহ ব্যবহার করা যেতে পারে। তবে এর অসুবিধা হল সাধারণ আভিধানিক বিশ্লেষণের চেয়ে বেশি কিছু না করা, যার জন্য প্রতিটি সংকলনের সাথে টোকেন স্ট্রিমের সিনট্যাক্টিক এবং শব্দার্থিক বিশ্লেষণ করা প্রয়োজন। উপরন্তু, প্রিটোকনাইজড ফাইলের লেক্সিকাল টোকেনের আকারের সাথে রৈখিকভাবে স্কেলিং সংকলন করার সময়, যা একটি সম্পূর্ণরূপে প্রাক-সংকলন পদ্ধতির ক্ষেত্রে অগত্যা নয় (ক্ল্যাং-এ পিসিএইচ এলোমেলোভাবে অ্যাক্সেসের অনুমতি দেয়)। ক্ল্যাং-এর প্রিটোকেনাইজেশন পদ্ধতিতে প্রি-প্রসেসরকে সহায়তা করার জন্য বেশ কয়েকটি ছোটখাটো প্রক্রিয়া অন্তর্ভুক্ত রয়েছেঃ ফাইলের অস্তিত্ব এবং ডেটস্ট্যাম্পের তথ্য ক্যাশিং এবং রেকর্ডিং অন্তর্ভুক্তি গার্ড যাতে সুরক্ষিত কোডটি দ্রুত বাদ দেওয়া যায়। আরও দেখুন উপসর্গ হেডার একক সংকলন ইউনিট রেফারেন্স বাহ্যিক লিঙ্ক প্রাক-সংকলিত হেডারগুলির যত্ন এবং ফিডিং জিসিসি ফ্র্যাক্টাল এক্সট্রিম সহ পূর্ব-সংকলিত হেডারঃ পূর্ব-সংকলিত হেডার সোর্স কোড সি (প্রোগ্রামিং ভাষা) হেডার সি + +