মেকফাইলে: = এবং = এর মধ্যে পার্থক্য কী?


101

মেকের ক্ষেত্রে ভেরিয়েবল অ্যাসাইনমেন্টের জন্য, আমি দেখতে পাচ্ছি: = এবং = অপারেটর। তাদের মধ্যে পার্থক্য কী?



উত্তর:


80

এটি GNU Make ডকুমেন্টেশনগুলিতে বর্ণিত হয়েছে , ভেরিয়েবলের দুটি স্বাদ 6.2 শিরোনামে বিভাগে ।

সংক্ষেপে, সংজ্ঞায়িত ভেরিয়েবলগুলি :=একবার প্রসারিত হয় তবে এর সাথে সংজ্ঞায়িত ভেরিয়েবলগুলি =যখনই ব্যবহৃত হয় তখন প্রসারিত হয়।


4
সুতরাং এটি বলা কি সঠিক হবে: = আরও দক্ষ? বা দক্ষতা কি মেকফিলসের সাথে আসলেই একটি উপাদান নয়?
— Ungeheuer

4
@ অঞ্জিহিউয়ার এটি কোনও সমস্যা নয় কারণ প্রক্রিয়া কলিংয়ের ( makeপ্রধান কাজ) এই জাতীয় অভ্যন্তরীণ পরিবর্তনশীল সমাধানের চেয়ে অনেক বেশি ওভারহেড রয়েছে।
— কিরিল বুলিগিন

68

সাধারণ কাজ :=

একটি সাধারণ অ্যাসাইনমেন্ট এক্সপ্রেশনটি প্রথম বারে একবারেই মূল্যায়ন করা হয়। উদাহরণস্বরূপ, যদি CC :=${GCC} ${FLAGS}প্রথম মুখোমুখি gcc -Wসময়টি মূল্যায়ন করা হয় তবে প্রতিবারের ${CC}সাথে এটি প্রতিস্থাপন করা হবে gcc -W।

পুনরাবৃত্তির কাজ =

কোডটিতে ভেরিয়েবলের মুখোমুখি হওয়ার সাথে সাথে একটি পুনরাবৃত্তির অ্যাসাইনমেন্ট এক্সপ্রেশনটি মূল্যায়ন করা হয়। উদাহরণস্বরূপ, এর মতো একটি বিবৃতি CC = ${GCC} {FLAGS}কেবল তখনই মূল্যায়ন করা হবে যখন কোনও ক্রিয়া ${CC} file.cকার্যকর করা হয়। তবে, যদি ভেরিয়েবলটি GCCপুনরায় নিয়োগ করা হয় GCC=c++তবে এরপরে পুনরায় নিয়োগের পরে ${CC}রূপান্তরিত হবে c++ -W।

শর্তসাপেক্ষ নিয়োগ ?=

শর্তসাপেক্ষ অ্যাসাইনমেন্ট কেবলমাত্র একটি ভেরিয়েবলের জন্য একটি মান নির্ধারণ করে যদি এর কোনও মান না থাকে

সংযোজন +=

অনুমান CC = gccতারপর সংযোজন অপারেটর মত ব্যবহার করা হয় CC += -w
তারপর CCএখন মূল্য আছেgcc -W

আরও টিউটোরিয়াল পরীক্ষা করে দেখুন


"একটি সাধারণ অ্যাসাইনমেন্ট এক্সপ্রেশনটি প্রথমবারের জন্য একবারে মূল্যায়ন করা হয়": পরিষ্কার করার জন্য, প্রবর্তন / মূল্যায়ন যখন ভেরিয়েবল সংজ্ঞায়িত হয়, এটি প্রথমবার ব্যবহার না করে হয়।
— মাইকেল বুড়

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