অনেক প্রশ্নের হিসাবে, এই প্রশ্নের উত্তর এটি নির্ভর করে । কোনটি উত্তম তা বলার পরিবর্তে আমি উদাহরণ এবং লক্ষ্য দিয়েছি যেখানে একজনের তুলনায় একজন ভাল।
প্রিপ্রোসেসর এবং ধ্রুবক উভয়েরই যথাযথ ব্যবহারের নিজস্ব স্থান রয়েছে।
প্রাক-প্রসেসরের ক্ষেত্রে, সংকলনের সময়ের আগে কোডটি সরানো হয়। অতএব, কোডগুলি সংকলিত না হওয়ার আশা করা যায় এমন পরিস্থিতিতে এটি সর্বোত্তম উপযোগী । এটি মডিউল কাঠামো, নির্ভরতাগুলিকে প্রভাবিত করতে পারে এবং এটি পারফরম্যান্সের দিকগুলির জন্য সেরা কোড বিভাগগুলি নির্বাচন করার অনুমতি দিতে পারে। নিম্নলিখিত ক্ষেত্রে, কেবলমাত্র একটি প্রিপ্রসেসর ব্যবহার করে কোড বিভাজন করতে হবে।
একাধিক প্ল্যাটফর্ম কোড:
উদাহরণস্বরূপ, কোডটি যখন বিভিন্ন প্ল্যাটফর্মের অধীনে সংকলিত হয়, যখন কোডের ওএসের নির্দিষ্ট সংস্করণ সংখ্যার উপর নির্ভরতা থাকে (বা এমনকি সংকলক সংস্করণ - যদিও এটি খুব বিরল)। উদাহরণস্বরূপ, আপনি যখন কোডের স্বল্প-বিস্তৃত বড়-সমকামী অংশগুলির সাথে কাজ করছেন - তাদের অবশ্যই ধ্রুবকের চেয়ে প্রিপ্রোসেসরগুলির সাথে পৃথক করা উচিত। অথবা আপনি যদি উইন্ডোজের জন্য কোডও সংকলন করেন তবে লিনাক্স এবং নির্দিষ্ট সিস্টেম কলগুলি খুব আলাদা।
পরীক্ষামূলক প্যাচগুলি: এটির
আর একটি ক্ষেত্রে যেখানে ন্যায়সঙ্গত হওয়া যায় তা হ'ল কিছু পরীক্ষামূলক কোড যা ঝুঁকিপূর্ণ বা নির্দিষ্ট কিছু মডিউল যা বাদ দিতে হয় যা উল্লেখযোগ্যভাবে সংযোগ বা পারফরম্যান্সের পার্থক্য রাখে। যদি কেউ () এর আড়াল না করে প্রিপ্রোসেসরের মাধ্যমে কোডটি নিষ্ক্রিয় করতে চান তবে কারণ আমরা সম্ভবত এই নির্দিষ্ট পরিবর্তন সেট দ্বারা প্রবর্তিত বাগ সম্পর্কে নিশ্চিত হতে পারি না এবং আমরা পরীক্ষামূলক ভিত্তিতে চলছি। যদি এটি ব্যর্থ হয় তবে আমাদের অবশ্যই পুনরায় লেখার চেয়ে সেই কোডটি উত্পাদনে অক্ষম করা ছাড়া আর কিছুই করতে হবে না । কিছু সময় পুরো কোডটি মন্তব্য করার জন্য ব্যবহার করা আদর্শ ।#if 0
নির্ভরতাগুলির সাথে মোকাবিলা করা:
আপনি উত্পন্ন করতে পারেন এমন আরও একটি কারণ উদাহরণস্বরূপ, আপনি যদি জেপিইজি চিত্রগুলি সমর্থন না করতে চান তবে আপনি সেই মডিউল / স্টাব সংকলন থেকে মুক্তি পেতে পারেন এবং শেষ পর্যন্ত লাইব্রেরি এতে (স্থিতিশীল বা গতিশীল) লিঙ্কটি করবে না can মডিউল। কখনও কখনও প্যাকেজগুলি এই ./configure
জাতীয় নির্ভরতার প্রাপ্যতা সনাক্ত করতে চালিত হয় এবং যদি গ্রন্থাগারগুলি উপস্থিত না থাকে, (বা ব্যবহারকারী সক্ষম করতে চান না) এই লাইব্রেরির সাথে লিঙ্ক না করে এই জাতীয় কার্যকারিতা স্বয়ংক্রিয়ভাবে অক্ষম করা হয়। এই নির্দেশাবলী স্বয়ংক্রিয়ভাবে উত্পন্ন হলে এখানে সর্বদা উপকারী।
লাইসেন্সিং: প্রিপ্রোসেসর ডিরেক্টরটির
একটি খুব আকর্ষণীয় উদাহরণ হ'ল ffmpeg । এটিতে কোডেক রয়েছে যা এর ব্যবহারের মাধ্যমে পেটেন্টগুলি লঙ্ঘন করতে পারে। যদি আপনি উত্সটি ডাউনলোড করেন এবং ইনস্টল করার জন্য সংকলন করেন তবে এটি আপনাকে জিজ্ঞাসা করে যে আপনি এই জাতীয় জিনিসগুলি চান বা রাখুন। কিছু শর্তের পরে কোডগুলি লুকিয়ে রাখা যদি শর্তাবলী আপনাকে আদালতে অবতরণ করতে পারে!
কোড অনুলিপি:
আকা ম্যাক্রোস। এটি ম্যাক্রোগুলি ওভার ব্যবহার করার পরামর্শ নয় - কেবলমাত্র ম্যাক্রোগুলির অনুলিপি-অনুলিপি প্রয়োগের আরও শক্তিশালী উপায় রয়েছে । তবে খুব যত্ন সহকারে এটি ব্যবহার করুন; এবং আপনি কী করছেন তা যদি আপনি জানেন তবে এটি ব্যবহার করুন। অবশ্যই ধ্রুবকরা এটি করতে পারে না। inline
যদি কেউ এটি করা সহজ হয় তবে পাশাপাশি ফাংশনগুলিও ব্যবহার করতে পারেন ।
সুতরাং আপনি যখন ধ্রুবক ব্যবহার করবেন?
প্রায় সর্বত্র।
ন্যাটারের কোড প্রবাহ:
সাধারণভাবে আপনি যখন ধ্রুবক ব্যবহার করেন তখন এটি নিয়মিত ভেরিয়েবল থেকে প্রায় পৃথক পৃথক এবং তাই এটি আরও ভাল পঠনযোগ্য কোড। আপনি যদি 75 টি লাইনের রুটিন লিখেন- প্রতি # লাইনের পরে 3 বা 4 টি লাইন থাকলে # আইডিপিডিফ খুব পড়তে অক্ষম । সম্ভবত #ifdef দ্বারা নিয়ন্ত্রিত একটি প্রাথমিক ধ্রুবক দেওয়া হয়েছে এবং এটি যেখানেই প্রাকৃতিক প্রবাহে ব্যবহার করুন।
ভাল ইনডেন্ট কোড: সমস্ত প্রিপ্রোসেসর নির্দেশিকা, অন্যথায় ভাল ইনডেন্ট কোড সহ কখনই ভাল কাজ করবেন না । এমনকি যদি আপনার সংকলক # ডিফের ইন্ডেন্টেশন অনুমতি দেয় তবে প্রাক-এএনএসআই সি প্রিপ্রসেসর একটি লাইন আর "#" অক্ষর আরম্ভের মধ্যে স্থানের অনুমতি দেয় না; শীর্ষস্থানীয় "#" সর্বদা প্রথম কলামে রাখতে হবে।
কনফিগারেশন:
ধ্রুবক / বা ভেরিয়েবলগুলি বোঝার অন্য কারণ হ'ল তারা গ্লোবালগুলির সাথে সংযুক্ত হওয়া থেকে সহজেই বিকশিত হতে পারে বা ভবিষ্যতে কনফিগারেশন ফাইলগুলি থেকে উত্পন্ন হতে পারে।
একটি শেষ জিনিস:
সুযোগটি অতিক্রম করার জন্য প্রিপ্রসেসর নির্দেশিকা
কখনই ব্যবহার করবেন না বা । অর্থাত শুরু বা শেষ বিভিন্ন পক্ষের । এটি অত্যন্ত খারাপ; এটি বিভ্রান্তিকর হতে পারে, এটি কিছু সময় বিপজ্জনক হতে পারে।#ifdef
#endif
{ ... }
#ifdef
#endif
{ ... }
এটি অবশ্যই একটি বিস্তৃত তালিকা নয়, তবে আপনাকে সম্পূর্ণ পার্থক্য দেখায়, যেখানে কোন পদ্ধতিটি ব্যবহারের জন্য আরও উপযুক্ত। এটি আসলে কোনটি সম্পর্কে ভাল তা নয় , প্রদত্ত প্রসঙ্গে যেটি ব্যবহার করা আরও স্বাভাবিক it