ভিজ্যুয়াল স্টুডিওতে প্রিপ্রোসেসিংয়ের পরে আমি কীভাবে সি / সি ++ উত্স ফাইলটি দেখতে পারি?


206

ধরা যাক আমার কাছে অনেকগুলি প্রিপ্রোসেসর নির্দেশিকা সহ একটি উত্স ফাইল রয়েছে। প্রিপ্রসেসরটি এটির সাথে সম্পন্ন করার পরে এটি কীভাবে দেখা যায় তা দেখা সম্ভব?


আপনি আরও বেশি তথ্য সরবরাহ করেছেন যেমন আপনি কোন সংকলকটি ব্যবহার করছেন তা সহায়তা করবে।
জারেডপাড়

আমি বর্তমানে আমার আইডিই হিসাবে ভিজ্যুয়াল স্টুডিও 2005 ব্যবহার করছি।
জিও

তারপরে ডিফল্টরূপে আপনি cl.exe সংকলক ব্যবহার করছেন।
মার্টিন ইয়র্ক

3
যখন তিনি বললেন যে তিনি ভিএস ২০০৫ ব্যবহার করছেন তখন কেন একজন গিসি উত্তর গৃহীত হয়েছিল?
জিম বাক

উত্তর:


147

cl.exe, মাইক্রোসফ্ট ভিজ্যুয়াল সি ++ এর কমান্ড লাইন ইন্টারফেসের প্রিপ্রোসেসড ফাইল আউটপুট করার জন্য তিনটি আলাদা বিকল্প রয়েছে (অতএব ভিজ্যুয়াল সি ++ সম্পর্কে পূর্ববর্তী প্রতিক্রিয়াগুলির মধ্যে অসঙ্গতি):

আপনি যদি # লাইন নির্দেশিকা ব্যতীত কোনও ফাইলে প্রস্রোস করতে চান তবে /Pএবং /EPবিকল্পগুলি একত্রিত করুন।


1
আমি কীভাবে এই আদেশগুলি nmake এবং Makefile দিয়ে একটি প্রকল্পে পাস করব?
WooDzu

@ ওউডজু একটি traditionalতিহ্যবাহী মেকফাইল ব্যবহার করে ভিজ্যুয়াল সি ++ প্রকল্পগুলি তৈরি করে এমন কাজগুলিকে স্বয়ংক্রিয় করতে এনএমএকেই (nmake.exe) ব্যবহার করুন। ~ Msdn.microsoft.com/en-us/library/f35ctcxw.aspx
G.Rassovsky

8
দয়া করে নোট করুন যে /Pআপত্তি ফাইলগুলির প্রজন্মকে দমন করবে। সুতরাং আপনি যদি /Pবিকল্পগুলি রাখেন তবে আপনি কিছু ত্রুটিযুক্ত ফাইলগুলি খুঁজে পেতে পারে না বলে কিছু ত্রুটিযুক্ত লিঙ্কটি পেতে পারেন কারণ এটি আসলে তৈরি করা হয়নি।
স্মিভিকিপিডিয়া

এমএস সংকলক ( ) ব্যবহার করার চেষ্টা করার সময় আপনি আছেন VS Developer command promptএবং না আছেন তা নিশ্চিত করুন । সংকলক প্রচলিত কোমন্ড প্রম্পটে উপলভ্য নয়। Command promptcl
dmytro.poliarush

ভিএস2019 সম্প্রদায়: / পি এলএনকে 1104 ত্রুটিটি এখনও প্রেসের বাইরে উত্তপ্ত।
লরি স্টারন

119

বেশিরভাগ সংকলকের কাছে কেবল প্রিপ্রসেসর চালানোর জন্য একটি বিকল্প রয়েছে। উদাহরণস্বরূপ , জিসিসি প্রদান করে - ই:

   -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 / পাথ / থেকে / অন্তর্ভুক্ত / দির পাস করতে পারেন।

উইন্ডোজের পক্ষে, আমি উত্তর দেওয়ার জন্য এটি অন্যান্য পোস্টারগুলিতে ছেড়ে দেব কারণ আমি সেখানে কোনও বিশেষজ্ঞ নই।



100

স্যুটেশন এক্সপ্লোরার-এ ফাইলটিতে ডান-ক্লিক করুন, সম্পত্তিগুলি। কনফিগারেশন বৈশিষ্ট্যসমূহের অধীনে -> সি / সি ++ -> প্রাকপ্রসেসর, "প্রিপ্রোসেসড ফাইল উত্পন্ন করুন" যা আপনি সন্ধান করছেন। তারপরে সমাধান এক্সপ্লোরারে ফাইলটিতে ডান ক্লিক করুন এবং "সংকলন" নির্বাচন করুন। প্রিপ্রোসেসড ফাইলটি এক্সটেনশান সহ আউটপুট ডিরেক্টরিতে (যেমন রিলিজ, ডিবাগ) তৈরি করা হয়। I (তার মন্তব্যের জন্য স্টিডকে ধন্যবাদ)।


9
ভিএস 2010 এ "একটি ফাইলের প্রিপ্রেসেসেস"।
রব ডব্লিউ

18
বিটিডাব্লু, ফাইলটি এক্সটেনশান সহ আউটপুট ডিরেক্টরিতে তৈরি করা হয় (যেমন Release, Debug) .i
স্ট্যান্ড

1
এটি অনেকগুলি সহায়তা করে যেহেতু প্রকল্পটিতে ইতিমধ্যে সেট আপ করা বিল্ড কনফিগারেশনটি সমস্ত ডান শিরোনামগুলি সন্ধান করতে ব্যবহার করে।
আইয়ানএইচ

দ্রষ্টব্য, এমএসভিসি 2015-এ আমার জন্য .i ফাইলটি আউটপুট ডিরেক্টরিতে ছিল না , তবে প্রকল্পের অন্তর্বর্তী ডিরেক্টরিতে ছিল । আপনি উদাহরণস্বরূপ সিএমকেক ব্যবহার করে আপনার প্রকল্পগুলি তৈরি করেন তবে এগুলি এক নয়।
ব্যবহারকারী 1556435

19

প্রিপ্রসেসরের আউটপুটটিতে আপনাকে সাধারণত কিছু পোস্টপ্রসেসিং করতে হবে, অন্যথায় সমস্ত ম্যাক্রো কেবল একটি লাইনারে প্রসারিত হয়, যা পড়তে এবং ডিবাগ করা শক্ত hard সি কোডের জন্য, নীচের মতো কিছু যথেষ্ট হবে:

gcc -E code.c | sed '/^\#/d' | indent -st -i2 > code-x.c

সি ++ কোডের জন্য এটি আসলে অনেক বেশি শক্ত। জিসিসি / জি ++ এর জন্য আমি এই পার্ল স্ক্রিপ্টটিকে দরকারী বলে মনে করেছি।


8

আমি মাইক্রোসফ্ট সংকলক সম্পর্কে কিছুই জানি না, তবে জিসিসিতে আপনি এটি ব্যবহার করতে পারেন:

gcc -E -P -o result.c my_file.h

আপনি মন্তব্য দেখতে চাইলে এটি ব্যবহার করুন:

gcc -E -C -P -o result.c my_file.h

এই পৃষ্ঠায় আরও বিকল্প উপলব্ধ ।


1
এটি জিসিসি-উদ্ভূত সংকলক যেমন Qcc.exe- এর সাথেও কাজ করে - ধন্যবাদ!
ঋষি

8

আপনি cl /EPযদি মাইক্রোসফ্টের সি ++ সংকলক ব্যবহার করেন তবে চেষ্টা করুন ।



5

বিকে 1 ই এবং আন্ড্রেয়াস এম উত্তর হিসাবে, সংকলকটির জন্য / পি বিকল্পের ফলে এটি কোনও ফাইলকে প্রাক প্রসেস করতে পারে। তবে, VS2005 এবং প্ল্যাটফর্ম বিল্ডার (একটি এম্বেডেড এআরএম প্রসেসরের জন্য) ব্যবহার করে আমার প্রকল্পে, প্রকল্পটি ডায়ালগ বাক্সে (জিম বি বর্ণিত হিসাবে) বিকল্পটি সক্ষম করতে পারে নি।

আমি ম্যানুয়ালি সিএল চালাতে এবং / পি যোগ করতে পারতাম, তবে এটি ব্যর্থ হয়েছিল কারণ পুরো বিল্ড চলাকালীন প্ল্যাটফর্ম নির্মাতা অদৃশ্যভাবে সক্রিয় হওয়া উপযুক্ত কমান্ড-লাইন বিকল্পগুলির সমস্ত আমার জানা ছিল না। সুতরাং আমি এই সমস্ত অপশন সম্পর্কে জানা প্রয়োজন।

আমার সমাধানটি ছিল বিল্ড.লগ ফাইলটিতে সন্ধান করা এবং কার্যকর হওয়া লাইনটি খুঁজে পাওয়া

CL blah-blah-blah myfile.c

আমি এই লাইনটি ক্লিপবোর্ডে অনুলিপি করেছি। "ব্লাহ-ব্লাহ-ব্লাহ" অংশে বিল্ড বিকল্পগুলি রয়েছে এবং এটি বিশাল ছিল।

আইডিইতে ফিরে, আমি মাইফাইল.কে ডান ক্লিক করে, "ওপেন বিল্ড উইন্ডো" নির্বাচন করেছি এবং তারপরে সেই উইন্ডোটিতে আমি বিল্ড কমান্ড-লাইনটি পেস্ট করেছি এবং একটি "/ পি" যুক্ত করেছি।

CL /P blah-blah-blah myfile.c

সম্পন্ন. মাইফাইল.আই ফাইলটি তৈরি করা হয়েছিল, এতে প্রিপ্রসেসর আউটপুট রয়েছে।


2

সিপিআইপি পাইথনে লেখা একটি নতুন সি / সি ++ প্রিপ্রোসেসর । আপনি যদি একটি প্রাক-প্রক্রিয়াজাত ফাইলের বিশদ চাক্ষুষ প্রতিনিধিত্ব করতে চান তবে এটির একটি শট দিন।

সিপিআইপি পাইথনে প্রয়োগ করা একটি সি / সি ++ প্রি-প্রসেসর। বেশিরভাগ প্রাক-প্রসেসর প্রাক-প্রক্রিয়াজাতিকে একটি নোংরা কাজ হিসাবে বিবেচনা করে যা যত তাড়াতাড়ি সম্ভব সম্পন্ন করা উচিত। প্রাক-প্রসেসিং পর্যায়ে সূক্ষ্ম ত্রুটিগুলি সনাক্ত করা এটি খুব কঠিন করে তুলতে পারে কারণ প্রাক-প্রসেসরগুলি যথাসম্ভব সস্তাভাবে ফলাফল পাওয়ার পক্ষে প্রচুর দরকারী তথ্য ফেলে দেয়।

অল্প কিছু বিকাশকারী প্রাক-প্রক্রিয়াজাতকরণ সত্যই বুঝতে পারে, অনেকের কাছে এটি কালো যাদুটির একটি অস্পষ্ট বিট। সিপিআইপি এর উন্নতি সাধন করে এবং প্রিপ্রসেসিংয়ের প্রতিটি বিবরণ রেকর্ড করে যাতে সিপিআইপি ফাইল নির্ভরতা, ম্যাক্রো ব্যবহার এবং এগুলি সম্পর্কে কিছু বিস্ময়করভাবে চাক্ষুষ তথ্য তৈরি করতে পারে।

সিপিআইপি সিপিপি (বা অন্য কোনও প্রতিষ্ঠিত প্রাক প্রসেসর) এর প্রতিস্থাপন হিসাবে নকশাকৃত নয়, পরিবর্তে সিপিআইপি প্রসেসিংয়ের গতির চেয়ে স্পষ্টতা এবং বোঝার বিষয়টি বিবেচনা করে।


2

উইন্ডোজ ওএসে, এই প্রশ্নের একটি সাধারণ এক লাইনের উত্তর হ'ল প্রস্রোসেসড ফাইলটি দেখতে ডস প্রম্পটে নীচের কমান্ডটি ব্যবহার করা:

CL /P /C myprogram.c

এটি myprogram.i নামে একটি ফাইল উত্পন্ন করবে । এটি খুলুন এবং আপনার প্রসারিত প্রাক প্রসেসরগুলি সন্ধান করুন।

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