#define one 0
#ifdef one
printf("one is defined ");
#ifndef one
printf("one is not defined ");
এই সালে কি ভূমিকা #ifdefএবং #ifndef, এবং আউটপুট কি?
#define one 0
#ifdef one
printf("one is defined ");
#ifndef one
printf("one is not defined ");
এই সালে কি ভূমিকা #ifdefএবং #ifndef, এবং আউটপুট কি?
উত্তর:
শর্তের উপর নির্ভর করে প্রি-প্রসেসর দ্বারা একটি ifdef/endifবা ifndef/endif জোড়ার ভিতরে থাকা পাঠ্যটি প্রি-প্রসেসরের দ্বারা রেখে দেওয়া বা সরিয়ে দেওয়া হবে। ifdef"" যদি নিম্নলিখিতটি সংজ্ঞায়িত করা হয় "এর ifndefঅর্থ" যখন নিম্নলিখিতটি সংজ্ঞায়িত না হয় "।
সুতরাং:
#define one 0
#ifdef one
printf("one is defined ");
#endif
#ifndef one
printf("one is not defined ");
#endif
সমান:
printf("one is defined ");
যেহেতু oneসংজ্ঞায়িত করা হয়েছে তাই ifdefসত্য এবং ifndefমিথ্যা। এটি কী হিসাবে সংজ্ঞায়িত হয়েছে তা বিবেচ্য নয় । এর মতো একটি অনুরূপ (আমার মতে আরও ভাল) কোডের টুকরোটি হ'ল:
#define one 0
#ifdef one
printf("one is defined ");
#else
printf("one is not defined ");
#endif
যেহেতু এই নির্দিষ্ট পরিস্থিতিতে অভিপ্রায়টি আরও স্পষ্টভাবে নির্দিষ্ট করে।
আপনার নির্দিষ্ট ক্ষেত্রে, সংজ্ঞায়িত ifdefহওয়ার পরে পাঠ্যটি মুছে ফেলা হবে না one। পরে টেক্সট ifndef হয় একই কারণে সরানো হয়েছে। endifকোনও পর্যায়ে দুটি সমাপ্তি রেখা থাকা প্রয়োজন এবং প্রথমটির ফলে নীচে পুনরায় অন্তর্ভুক্ত করা শুরু হবে:
#define one 0
+--- #ifdef one
| printf("one is defined "); // Everything in here is included.
| +- #ifndef one
| | printf("one is not defined "); // Everything in here is excluded.
| | :
| +- #endif
| : // Everything in here is included again.
+--- #endif
কারও উল্লেখ করা উচিত যে প্রশ্নে একটু ফাঁদ রয়েছে is #ifdefকেবলমাত্র নীচের চিহ্নটি #defineকমান্ড লাইনের মাধ্যমে বা সংজ্ঞায়িত করা হয়েছে কিনা তা পরীক্ষা করে দেখাবে তবে এর মান (বাস্তবে এর বিকল্প) অপ্রাসঙ্গিক। আপনি এমনকি লিখতে পারে
#define one
পূর্বপরিচয়কারীরা এটি গ্রহণ করে। তবে আপনি যদি #ifএটি ব্যবহার করেন তবে এটি অন্য জিনিস।
#define one 0
#if one
printf("one evaluates to a truth ");
#endif
#if !one
printf("one does not evaluate to truth ");
#endif
দেব one does not evaluate to truth। কীওয়ার্ডটি definedপছন্দসই আচরণ পেতে দেয়।
#if defined(one)
সুতরাং সমতুল্য #ifdef
#ifকনস্ট্রাক্টের সুবিধাটি হ'ল কোড পাথগুলিকে আরও ভালভাবে পরিচালনা করার অনুমতি দেওয়া হয়েছে, পুরানো #ifdef/ #ifndefজুটির সাথে এরকম কিছু করার চেষ্টা করুন ।
#if defined(ORA_PROC) || defined(__GNUC) && __GNUC_VERSION > 300
"# # এক" এর অর্থ হ'ল "# নির্দিষ্ট সময়" লেখা থাকলে "#if one" কার্যকর করা হয় অন্যথায় "#Findef one" কার্যকর করা হয়।
এটি কেবল সি প্রাক-প্রসেসর (সিপিপি) এর দিকনির্দেশক সমতুল্য, যদি, অন্যথায়, সি ভাষায় শাখা বিবৃতি দেয়।
উদাহরণস্বরূপ, যদি {# একটি নির্দিষ্ট করে} তবে প্রিন্টফ ("একজন সত্যের কাছে মূল্যায়ন করে"); অন্য প্রিন্টফ ("একটি সংজ্ঞায়িত নয়"); সুতরাং যদি একটি বিবৃতি # নির্ধারিত না থাকে তবে বিবৃতিটির অন্য শাখাটি কার্যকর করা হবে।
কোডটি অদ্ভুত দেখাচ্ছে কারণ প্রিন্টফ কোনও ফাংশন ব্লকে নেই।