ধরা যাক আমার কাছে অনেকগুলি প্রিপ্রোসেসর নির্দেশিকা সহ একটি উত্স ফাইল রয়েছে। প্রিপ্রসেসরটি এটির সাথে সম্পন্ন করার পরে এটি কীভাবে দেখা যায় তা দেখা সম্ভব?
ধরা যাক আমার কাছে অনেকগুলি প্রিপ্রোসেসর নির্দেশিকা সহ একটি উত্স ফাইল রয়েছে। প্রিপ্রসেসরটি এটির সাথে সম্পন্ন করার পরে এটি কীভাবে দেখা যায় তা দেখা সম্ভব?
উত্তর:
cl.exe
, মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ এর কমান্ড লাইন ইন্টারফেসের প্রিপ্রোসেসড ফাইল আউটপুট করার জন্য তিনটি আলাদা বিকল্প রয়েছে (অতএব ভিজ্যুয়াল সি ++ সম্পর্কে পূর্ববর্তী প্রতিক্রিয়াগুলির মধ্যে অসঙ্গতি):
/E
: স্টাডাউটে প্রিপ্রোসেস (জিসিসির -E বিকল্পের অনুরূপ)/P
: ফাইল করার জন্য প্রাকপ্রসেস/EP
: # লাইন নির্দেশ ছাড়াই স্টডআউট প্রিপ্রেসেসআপনি যদি # লাইন নির্দেশিকা ব্যতীত কোনও ফাইলে প্রস্রোস করতে চান তবে /P
এবং /EP
বিকল্পগুলি একত্রিত করুন।
/P
আপত্তি ফাইলগুলির প্রজন্মকে দমন করবে। সুতরাং আপনি যদি /P
বিকল্পগুলি রাখেন তবে আপনি কিছু ত্রুটিযুক্ত ফাইলগুলি খুঁজে পেতে পারে না বলে কিছু ত্রুটিযুক্ত লিঙ্কটি পেতে পারেন কারণ এটি আসলে তৈরি করা হয়নি।
VS Developer command prompt
এবং না আছেন তা নিশ্চিত করুন । সংকলক প্রচলিত কোমন্ড প্রম্পটে উপলভ্য নয়। Command prompt
cl
বেশিরভাগ সংকলকের কাছে কেবল প্রিপ্রসেসর চালানোর জন্য একটি বিকল্প রয়েছে। উদাহরণস্বরূপ , জিসিসি প্রদান করে - ই:
-E Stop after the preprocessing stage; do not run the compiler proper.
The output is in the form of preprocessed source code, which is sent
to the standard output.
সুতরাং আপনি কেবল চালাতে পারেন:
gcc -E foo.c
যদি আপনি এই জাতীয় কোনও বিকল্প না খুঁজে পান তবে আপনি কেবল নিজের মেশিনে সি প্রিপ্রোসেসরটিও খুঁজে পেতে পারেন। একে সাধারণত সিপিপি বলা হয় এবং সম্ভবত ইতিমধ্যে আপনার পথে রয়েছে। এটি এভাবে চালান:
cpp foo.c
যদি আপনাকে অন্যান্য ডিরেক্টরি থেকে অন্তর্ভুক্ত করতে হয় এমন শিরোনাম থাকে তবে আপনি নিয়মিত সংকলন করার মতোই আপনি এই দুটির মধ্যে -I / পাথ / থেকে / অন্তর্ভুক্ত / দির পাস করতে পারেন।
উইন্ডোজের পক্ষে, আমি উত্তর দেওয়ার জন্য এটি অন্যান্য পোস্টারগুলিতে ছেড়ে দেব কারণ আমি সেখানে কোনও বিশেষজ্ঞ নই।
স্যুটেশন এক্সপ্লোরার-এ ফাইলটিতে ডান-ক্লিক করুন, সম্পত্তিগুলি। কনফিগারেশন বৈশিষ্ট্যসমূহের অধীনে -> সি / সি ++ -> প্রাকপ্রসেসর, "প্রিপ্রোসেসড ফাইল উত্পন্ন করুন" যা আপনি সন্ধান করছেন। তারপরে সমাধান এক্সপ্লোরারে ফাইলটিতে ডান ক্লিক করুন এবং "সংকলন" নির্বাচন করুন। প্রিপ্রোসেসড ফাইলটি এক্সটেনশান সহ আউটপুট ডিরেক্টরিতে (যেমন রিলিজ, ডিবাগ) তৈরি করা হয়। I (তার মন্তব্যের জন্য স্টিডকে ধন্যবাদ)।
Release
, Debug
) .i
।
প্রিপ্রসেসরের আউটপুটটিতে আপনাকে সাধারণত কিছু পোস্টপ্রসেসিং করতে হবে, অন্যথায় সমস্ত ম্যাক্রো কেবল একটি লাইনারে প্রসারিত হয়, যা পড়তে এবং ডিবাগ করা শক্ত hard সি কোডের জন্য, নীচের মতো কিছু যথেষ্ট হবে:
gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c
সি ++ কোডের জন্য এটি আসলে অনেক বেশি শক্ত। জিসিসি / জি ++ এর জন্য আমি এই পার্ল স্ক্রিপ্টটিকে দরকারী বলে মনে করেছি।
আমি মাইক্রোসফ্ট সংকলক সম্পর্কে কিছুই জানি না, তবে জিসিসিতে আপনি এটি ব্যবহার করতে পারেন:
gcc -E -P -o result.c my_file.h
আপনি মন্তব্য দেখতে চাইলে এটি ব্যবহার করুন:
gcc -E -C -P -o result.c my_file.h
এই পৃষ্ঠায় আরও বিকল্প উপলব্ধ ।
ভিজ্যুয়াল স্টুডিওতে আপনি / পি দিয়ে একটি ফাইল (বা প্রকল্প) সংকলন করতে পারেন।
বিকে 1 ই এবং আন্ড্রেয়াস এম উত্তর হিসাবে, সংকলকটির জন্য / পি বিকল্পের ফলে এটি কোনও ফাইলকে প্রাক প্রসেস করতে পারে। তবে, VS2005 এবং প্ল্যাটফর্ম বিল্ডার (একটি এম্বেডেড এআরএম প্রসেসরের জন্য) ব্যবহার করে আমার প্রকল্পে, প্রকল্পটি ডায়ালগ বাক্সে (জিম বি বর্ণিত হিসাবে) বিকল্পটি সক্ষম করতে পারে নি।
আমি ম্যানুয়ালি সিএল চালাতে এবং / পি যোগ করতে পারতাম, তবে এটি ব্যর্থ হয়েছিল কারণ পুরো বিল্ড চলাকালীন প্ল্যাটফর্ম নির্মাতা অদৃশ্যভাবে সক্রিয় হওয়া উপযুক্ত কমান্ড-লাইন বিকল্পগুলির সমস্ত আমার জানা ছিল না। সুতরাং আমি এই সমস্ত অপশন সম্পর্কে জানা প্রয়োজন।
আমার সমাধানটি ছিল বিল্ড.লগ ফাইলটিতে সন্ধান করা এবং কার্যকর হওয়া লাইনটি খুঁজে পাওয়া
CL blah-blah-blah myfile.c
আমি এই লাইনটি ক্লিপবোর্ডে অনুলিপি করেছি। "ব্লাহ-ব্লাহ-ব্লাহ" অংশে বিল্ড বিকল্পগুলি রয়েছে এবং এটি বিশাল ছিল।
আইডিইতে ফিরে, আমি মাইফাইল.কে ডান ক্লিক করে, "ওপেন বিল্ড উইন্ডো" নির্বাচন করেছি এবং তারপরে সেই উইন্ডোটিতে আমি বিল্ড কমান্ড-লাইনটি পেস্ট করেছি এবং একটি "/ পি" যুক্ত করেছি।
CL /P blah-blah-blah myfile.c
সম্পন্ন. মাইফাইল.আই ফাইলটি তৈরি করা হয়েছিল, এতে প্রিপ্রসেসর আউটপুট রয়েছে।
সিপিআইপি পাইথনে লেখা একটি নতুন সি / সি ++ প্রিপ্রোসেসর । আপনি যদি একটি প্রাক-প্রক্রিয়াজাত ফাইলের বিশদ চাক্ষুষ প্রতিনিধিত্ব করতে চান তবে এটির একটি শট দিন।
সিপিআইপি পাইথনে প্রয়োগ করা একটি সি / সি ++ প্রি-প্রসেসর। বেশিরভাগ প্রাক-প্রসেসর প্রাক-প্রক্রিয়াজাতিকে একটি নোংরা কাজ হিসাবে বিবেচনা করে যা যত তাড়াতাড়ি সম্ভব সম্পন্ন করা উচিত। প্রাক-প্রসেসিং পর্যায়ে সূক্ষ্ম ত্রুটিগুলি সনাক্ত করা এটি খুব কঠিন করে তুলতে পারে কারণ প্রাক-প্রসেসরগুলি যথাসম্ভব সস্তাভাবে ফলাফল পাওয়ার পক্ষে প্রচুর দরকারী তথ্য ফেলে দেয়।
অল্প কিছু বিকাশকারী প্রাক-প্রক্রিয়াজাতকরণ সত্যই বুঝতে পারে, অনেকের কাছে এটি কালো যাদুটির একটি অস্পষ্ট বিট। সিপিআইপি এর উন্নতি সাধন করে এবং প্রিপ্রসেসিংয়ের প্রতিটি বিবরণ রেকর্ড করে যাতে সিপিআইপি ফাইল নির্ভরতা, ম্যাক্রো ব্যবহার এবং এগুলি সম্পর্কে কিছু বিস্ময়করভাবে চাক্ষুষ তথ্য তৈরি করতে পারে।
সিপিআইপি সিপিপি (বা অন্য কোনও প্রতিষ্ঠিত প্রাক প্রসেসর) এর প্রতিস্থাপন হিসাবে নকশাকৃত নয়, পরিবর্তে সিপিআইপি প্রসেসিংয়ের গতির চেয়ে স্পষ্টতা এবং বোঝার বিষয়টি বিবেচনা করে।