.H.gch ফাইলটি কী?


116

আমার সম্প্রতি একটি ক্লাস প্রকল্প হয়েছিল যেখানে আমাকে জি ++ দিয়ে একটি প্রোগ্রাম তৈরি করতে হয়েছিল।

আমি একটি মেকফাইল ব্যবহার করেছি এবং কিছু কারণে এটি মাঝে মাঝে একটি .h.gch ফাইলটি রেখে দেয়।

কখনও কখনও, এটি সংকলনকে প্রভাবিত করে না তবে প্রায়শই প্রায়শই এটি সংকলনটির ফলে কোনও সমস্যার সমাধান করা হয়েছে বা যা বোঝায়নি তার জন্য ত্রুটি জারি করে।

আমার দুটি প্রশ্ন আছে:

1) একটি .h.gch ফাইল কী এবং কোনটি ব্যবহার করা হয়? এবং

2) এটি পরিষ্কার না করা হলে কেন এমন সমস্যা দেখা দেবে?


13
আপনি যদি দুর্ঘটনাক্রমে একটি .h ফাইল সংকলন করতে বলুন তবে gcc এগুলি তৈরি করে। এটি করবেন না :) (যদি না আপনি প্রকৃতপক্ষে একটি পূর্বনির্ধারিত শিরোনাম তৈরি করতে চান)
জাল্ফ

3
জিসিসি বিশ্বের বাইরে , .gch ফাইলগুলিকে .pch বলা হয়
পাতাপুম 13

উত্তর:


115

একটি .gchফাইল হ'ল একটি পূর্বনির্ধারিত শিরোলেখ।

যদি একটি .gchনা পাওয়া যায় তবে সাধারণ হেডার ফাইলগুলি ব্যবহার করা হবে।

তবে, যদি আপনার প্রকল্পটি প্রাক-সংকলিত শিরোনাম উত্পন্ন করতে সেট করা থাকে তবে তা যদি তাদের উপস্থিত না থাকে এবং পরের বিল্ডে তাদের ব্যবহার করে তবে তা সেগুলি তৈরি করে।

কখনও কখনও *.h.gchদুর্নীতিগ্রস্থ হয়ে যায় বা পুরানো তথ্য থাকবে, সুতরাং সেই ফাইলটি মোছা এবং আবার সংকলন করা উচিত এটি ঠিক করা উচিত।


1
তাহলে .gch এর আকারটি কেন এত বড়?
নন্দ

38

আপনি যদি কোনও ফাইল সম্পর্কে জানতে চান তবে কেবল টার্মিনালে টাইপ করুন

file filename

file a.h.gch দেয়:

GCC precompiled header (version 013) for C

2
খনি (OSX, zsh) কেবল .h.gchফাইলের জন্য "ডেটা" বলে says আমি সন্দেহ করি এর জন্য আপনার সঠিক ডাটাবেস ফাইলের দরকার আছে need
ওন্দ্রেজ স্লিনটেক


17

ক) এগুলি পূর্বনির্ধারিত শিরোনাম: http://gcc.gnu.org/onlinesocs/gcc/Precompiled-Heedia.html

খ) সেগুলিতে .h ফাইলগুলি থেকে "ক্যাশেড" তথ্য থাকে এবং প্রতিবার আপনি নিজ নিজ .h ফাইল পরিবর্তন করলে আপডেট করা উচিত। যদি এটি না ঘটে - আপনার প্রকল্পে ভুল নির্ভরতা সেট আছে


15

অন্যান্য উত্তরগুলি একটি জিপিএইচ ফাইল কী তা বিবেচনা করে সম্পূর্ণ নির্ভুল। যাইহোক, প্রসঙ্গে (এই ক্ষেত্রে, g ++ ব্যবহার করে একটি শিক্ষানবিস) সবকিছুই। এই প্রসঙ্গে দুটি নিয়ম রয়েছে:

  1. কখনও, কখনও, কখনও একটি জি ++ সংকলন লাইনে একটি .h ফাইল রাখবেন না। কেবলমাত্র .cpp ফাইল। যদি .h ফাইলটি কখনও দুর্ঘটনাক্রমে সংকলিত হয় তবে যে কোনও * .gch ফাইল সরান

  2. কখনও কখনও, কখনও অন্তর্ভুক্ত বিবৃতিতে .cpp ফাইল রাখবেন না।

যদি নিয়ম একটি নষ্ট হয়ে যায় তবে এক পর্যায়ে প্রশ্নের বর্ণিত সমস্যা দেখা দেবে। যদি নিয়ম দুটি নষ্ট হয়ে যায় তবে এক পর্যায়ে লিঙ্কার একাধিক সংজ্ঞাযুক্ত প্রতীক সম্পর্কে অভিযোগ করবে।


2
1 ম পয়েন্টের জন্য আমি উদাহরণ হিসাবে একটি ফাংশন ব্যবহার করব। কোনও প্রোগ্রামার মাইফাঙ্ক () কল করার আগে প্রোগ্রামার অবশ্যই ফাংশন প্রোটোটাইপ ব্যবহার করে সংকলককে মাইফাঙ্ক () বর্ণনা করতে পারে। যদি বেশ কয়েকটি ভিন্ন .cpp ফাইলগুলিকে myfunc () কল করে তবে প্রতিটি .cpp এ প্রোটোটাইপ সরবরাহ করতে হবে। প্রতিটি .cpp ফাইলে প্রোটোটাইপ টাইপ করার জন্য এটি ত্রুটিযুক্ত। অতএব, ফাংশন প্রোটোটাইপ একটি। H ফাইলে স্থাপন করা হয় যা প্রতিটি .cpp ফাইলে # অন্তর্ভুক্ত থাকে যেখানে মাইফাঙ্ক বলা হয়। শিরোলেখ ফাইলগুলিতে কেবল সংকলকটির জন্য তথ্য থাকে, মৃত্যুদন্ড কার্যকর করা কোড নয়। সুতরাং একটি জি .+ লাইনে একটি .h ফাইল স্থাপন করা অর্থহীন।
tgibson

আপনার নিয়ম 2 এ, আমরা #cpp ফাইলগুলিকে টেমপ্লেট ফাংশনটির সংজ্ঞা দিলে অন্তর্ভুক্ত করি
ন্যানড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.