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


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.