ধরা যাক আমি আমার কোডে বিভিন্ন ধরণের আউটপুট বার্তা রাখতে চাই। এর মধ্যে একটি DEBUGহ'ল কোডটি যখন ডিবাগ মোডে সংকলিত হয় কেবল তখনই এটি মুদ্রিত হয়।
সাধারণত আমি কিছু লিখতে হবে
#ifdef DEBUG
std::cout << "Debug message" << std::endl;
#endif
যা অনেক জায়গায় ব্যবহার করা বেশ জটিল এবং বিরক্তিকর।
কোড স্নিপেটের জন্য কোনও ম্যাক্রো সংজ্ঞায়িত করা কি একটি ভাল অনুশীলন, তাই আপনি কি এটি এইভাবে ব্যবহার করতে চান?
MSG_DEBUG("Debug message")
বা ম্যাক্রো ছাড়াই কীভাবে এটি মোকাবেলা করার জন্য আরও কোনও মার্জিত উপায় আছে? আমি সি এবং সি ++ উভয় ক্ষেত্রেই সম্ভাব্য সমাধানগুলি সম্পর্কে আগ্রহী, কারণ আমি বিভিন্ন প্রকল্পে উভয় ভাষা ব্যবহার করছি।
constexpr ifউদাহরণস্বরূপ সি ++ এর সাথে আরও ভালভাবে প্রয়োগ করা যেতে পারে ।
STDERR। এছাড়াও, পরিবর্তে এটির NDEBUGমতো নির্ভর করে না কেন assert()? তারপরে আপনি এটির মতো সংজ্ঞা দিতে পারেন #define DEBUG_MSG(MSG) assert(std::cerr << MSG)যা স্ট্রিম-স্টেটও পরীক্ষা করে।