#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" কার্যকর করা হয়।
এটি কেবল সি প্রাক-প্রসেসর (সিপিপি) এর দিকনির্দেশক সমতুল্য, যদি, অন্যথায়, সি ভাষায় শাখা বিবৃতি দেয়।
উদাহরণস্বরূপ, যদি {# একটি নির্দিষ্ট করে} তবে প্রিন্টফ ("একজন সত্যের কাছে মূল্যায়ন করে"); অন্য প্রিন্টফ ("একটি সংজ্ঞায়িত নয়"); সুতরাং যদি একটি বিবৃতি # নির্ধারিত না থাকে তবে বিবৃতিটির অন্য শাখাটি কার্যকর করা হবে।
কোডটি অদ্ভুত দেখাচ্ছে কারণ প্রিন্টফ কোনও ফাংশন ব্লকে নেই।