সিফ + প্রি-প্রসেসরের নির্দেশাবলী নেস্ট করা যেতে পারে?


85

সি ++ এ প্রি-প্রসেসরের দিকনির্দেশ সম্পর্কে আমার একটি প্রশ্ন রয়েছে:

উদাহরণ স্বরূপ:

#ifndef QUESTION

//some code here

#ifndef QUESTION

//some code here

#endif

#endif

আমরা এটা এই ভাবে ব্যবহার করতে পারেন, এবং সি ++ কম্পাইলার মেলাতে পারে ifndefএবং endifঠিক পথে?


4
আপনি শর্তসাপেক্ষে বাসা বাঁধতে পারেন, এবং আপনি অন্যের কাছ থেকে একটি ম্যাক্রো কল করতে পারেন তবে আপনি সরাসরি ম্যাক্রোগুলি বাসা করতে পারবেন না, যেমন #define AAA #define XXX- এটি সঠিকভাবে কাজ করবে না।
এসএফ

4
যেহেতু একটি সি প্রশ্ন এই প্রশ্নের সদৃশ হিসাবে কেবল বন্ধ ছিল, তাই আমি উল্লেখ করব যে সি এবং সি ++ প্রিপ্রসেসরের নিয়মগুলি একই, কমপক্ষে যতক্ষণ না এই প্রশ্নটি উদ্বিগ্ন।
কিথ থম্পসন

উত্তর:


113

হ্যাঁ আমরা পারি. #endifপূর্ববর্তী বিবৃতি ম্যাচ #if #ifdefবা #ifndefইত্যাদি, যার জন্য একটি সংশ্লিষ্ট হয়েছে না#endif

যেমন

#if  ----------|
#if  -----|    |
#endif ---|    |
#endif --------|

আমাদের এখানে দুটি # এন্ডিফ আছে, তাই প্রথম # এন্ডিফ দ্বিতীয় # আইডিফের সাথে মিলবে?

এটি আগেরটির সাথে মেলে না; এর অর্থ এই যে আমরা তাদের বাসাতে পারি না
ফ্রেড ফু

49

হ্যাঁ, আপনি বাসা #if/ #endifব্লক করতে পারেন । কিছু সি কোডিং শৈলী আপনাকে লিখতে বলত

#ifdef CONDITION1
# ifdef CONDITION2
# endif
#endif

নীড়ের স্তর বোঝাতে স্পেস ব্যবহার করে using


4
নেস্টিং বিটের জন্য +1, এটি কখনও কখনও স্বচ্ছতার সাথে অনেক সহায়তা করে।
আন্দ্রে কারন

আপনি স্থান sertোকান কেন? কেন শুধু ইন্ডেন্ট না#ifdef
জাহিদ

4
এমনকি আমি #প্রিপ্রসেসর নির্দেশিকাগুলির মধ্যে ফাঁকা স্থানও জানতাম না । এই টিপটির জন্য বড় ধন্যবাদ!
অ্যালেক্সার

0

আপনার কোডে, # আইফোনফ কোয়েস্টিয়ান বিভাগটি যদি আপনি # অপরিশোধিত প্রশ্ন না করেন তবে তা বাতিল করা হবে discard

শুভকামনা!


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