মনে রাখবেন, সি / সি ++ প্রিপ্রসেসর একটি পৃথক, নিখুঁত পাঠ্য, প্রক্রিয়াকরণ পদক্ষেপ। #include
অন্তর্ভুক্ত শিরোনামের বিষয়বস্তুতে নির্দেশ টানাপড়েনে কম্পাইলার এটা বিশ্লেষণ করতে হয়েছে। তদুপরি, প্রত্যেকটির সংকলন .cpp
সম্পূর্ণ পৃথক, সুতরাং B.h
সংকলন করার সময় কেবলমাত্র সংকলকটি পার্স করা হয়েছে B.cpp
তা সংকলনের সময় যখন আবার প্রয়োজন হয় তখন এটি কমপক্ষে সহায়তা করে না A.cpp
। এবং আবার সংকলনের সময় C.cpp
। এবং D.cpp
। ইত্যাদি। এর মধ্যে অন্তর্ভুক্ত থাকা কোনও ফাইল পরিবর্তন হলে সেই ফাইলগুলির প্রত্যেকটিই পুনরায় সংযুক্ত করতে হবে।
তাই বলে বর্গ A
ব্যবহারসমূহ বর্গ B
এবং ক্লাস C
এবং D
ব্যবহার বর্গ A
কিন্তু নিপূণভাবে প্রয়োজন হবে না B
। ক্লাসটি যদি A
কেবলমাত্র দু'বার সংকলিত B
হওয়ার চেয়ে সামনের ফরওয়ার্ড-ডিক্লেয়ারেশন দিয়ে ঘোষণা B.h
করা যায়: সংকলন করার সময় B.cpp
এবং A.cpp
(কারণ B
এখনও A
এর পদ্ধতিগুলির অভ্যন্তরে প্রয়োজন )।
কিন্তু যখন A.h
অন্তর্ভুক্ত B.h
, এটিকে কম্পাইল করা হয় চার বার-যখন কম্পাইল B.cpp
, A.cpp
, C.cpp
এবং D.cpp
পরবর্তী দুই এখন পরোক্ষভাবে অন্তর্ভুক্ত হিসাবে B.h
খুব।
এছাড়াও যখন শিরোনাম একাধিকবার অন্তর্ভুক্ত করা হয়, তখনও প্রিপ্রেসেসরটি প্রতিবার এটি পড়তে হয় । গার্ডিংয়ের কারণে এটি এর সামগ্রীতে প্রসেসিং এড়িয়ে যাবে #ifdef
, তবে এটি এখনও এটি পড়ে এবং গার্ডের শেষের সন্ধান করা দরকার, যার অর্থ এটি ভিতরে সমস্ত প্রিপ্রসেসর নির্দেশিকা বিশ্লেষণ করতে হবে।
(অন্য উত্তরে উল্লিখিত হিসাবে, পূর্বনির্ধারিত শিরোনামগুলি এটিকে ঘিরে কাজ করার চেষ্টা করা হয়, তবে এগুলি তাদের নিজস্ব কৃমি হতে পারে; মূলত আপনি এগুলি সিস্টেম শিরোনামের জন্য যুক্তিসঙ্গতভাবে ব্যবহার করতে পারেন এবং কেবল যদি আপনি তাদের খুব বেশি ব্যবহার না করেন তবে এর জন্য নয়) আপনার প্রকল্পের শিরোনাম)
vehicle.h
,bus.h
,toybus.h
।vehicle.h
দ্বারা অন্তর্ভুক্তbus.h
এবং দ্বারাbus.h
অন্তর্ভুক্তtoybus.h
। তাই যদি আমি কিছু পরিবর্তন করিbus.h
। সংকলকটিvehicle.h
আবার কি খোলে এবং বিশ্লেষণ করে ? এটি আবার সংকলন করে?