এটি এমন এক অদ্ভুত কোণার ক্ষেত্রে যেখানে আমরা ইংরেজী ভাষার সীমাবদ্ধতা এবং মানের সাথে বেমানান কাঠামোর সাপেক্ষে। সুতরাং সর্বোপরি, আমি একটি বাধ্যমূলক পাল্টা যুক্তি তৈরি করতে পারি, কারণ এটি প্রমাণ করা অসম্ভব :) 1 1
প্রশ্নের কোডটি সু-সংজ্ঞায়িত আচরণ প্রদর্শন করে।
হিসাবে [7.1.4] প্রশ্ন ভিত্তিতে, এর সেখানে শুরু করা যাক:
নিম্নলিখিত বর্ণিত বিবরণগুলিতে স্পষ্টভাবে অন্যথায় বর্ণিত না হলে নিম্নলিখিতগুলির প্রত্যেকটি বিবৃতি প্রযোজ্য: কোনও ফাংশনের যুক্তির যদি একটি অবৈধ মান থাকে ( যেমন ফাংশনের ডোমেনের বাইরে কোনও মান, বা প্রোগ্রামের ঠিকানা জায়গার বাইরে কোনও পয়েন্টার, বা একটি নাল পয়েন্টার , [... অন্যান্য উদাহরণ ...] ) [...] আচরণটি সংজ্ঞায়িত। [... অন্যান্য বিবৃতি ...]
এটি আনাড়ি ভাষা। একটি ব্যাখ্যা হ'ল তালিকার আইটেমগুলি সমস্ত লাইব্রেরির ফাংশনগুলির জন্য ইউবি হয়, যদি না পৃথক বিবরণ দ্বারা ওভাররাইড করা হয়। তবে তালিকাটি "যেমন" দিয়ে শুরু হয়, এটি ইঙ্গিত করে যে এটি চিত্রকর নয়, সম্পূর্ণ নয়। উদাহরণস্বরূপ, এটি স্ট্রিংগুলির সঠিক নাল-সমাপ্তির উল্লেখ করে না (উদাহরণস্বরূপ আচরণের জন্য সমালোচনা strcpy
)।
সুতরাং এটি 7.1.4 এর অভিপ্রায় / স্কোপটি স্পষ্টভাবে হ'ল একটি "অবৈধ মান" ইউবি বাড়ে ( অন্যথায় না বলা হয় ) to একটি "অবৈধ মান" হিসাবে গণনা করা হবে তা নির্ধারণ করতে আমাদের প্রতিটি ফাংশনের বর্ণনার দিকে নজর রাখতে হবে।
উদাহরণ 1 - strcpy
[.2.২১.২.৩] কেবল এটিই বলেছেন:
strcpy
ফাংশন কপি স্ট্রিং দ্বারা প্রতি ইঙ্গিত s2
(সসীম নাল চরিত্র সহ) অ্যারের মধ্যে দ্বারা প্রতি ইঙ্গিত s1
। যদি অনুলিপি করা বস্তুগুলির মধ্যে অনুলিপি হয়, তবে আচরণটি সংজ্ঞায়িত।
এটি নাল পয়েন্টারগুলির স্পষ্টভাবে উল্লেখ করে না, তবুও এটি নাল টার্মিনেটরগুলির কোনও উল্লেখ করে না। পরিবর্তে, "স্ট্রিং পয়েন্ট টু বাই s2
" থেকে একটি সূত্র নির্ধারণ করে যে একমাত্র বৈধ মানগুলি স্ট্রিং (যেমন নাল-টার্মিনেটেড ক্যারেক্টার অ্যারেগুলিতে পয়েন্টার)।
প্রকৃতপক্ষে, পৃথক বর্ণনা জুড়ে এই প্যাটার্নটি দেখা যায়। আরও কয়েকটি উদাহরণ:
[7.6.4.1 (fenv)] বর্তমান ফ্লোটিং পয়েন্ট পরিবেশে সঞ্চয় বস্তুর প্রতি ইঙ্গিত দ্বারাenvp
[7.12.6.4 (frexp)] int- এ মধ্যে পূর্ণসংখ্যা সংরক্ষণ তীক্ষ্ন বস্তুর দ্বারাexp
[7.19.5.1 (fclose সাথে)] প্রবাহ প্রতি ইঙ্গিত দ্বারাstream
উদাহরণ 2 - printf
[7.19.6.1] এ সম্পর্কে বলেছেন %p
:
p
- যুক্তি একটি পয়েন্টার হতে হবে void
। নির্দেশকের মান প্রয়োগকরণ-সংজ্ঞায়িত পদ্ধতিতে মুদ্রণ অক্ষরের ক্রমতে রূপান্তরিত হয়।
নাল একটি বৈধ পয়েন্টার মান, এবং এই বিভাগটি কোনও স্পষ্টভাবে উল্লেখ করে না যে নালটি একটি বিশেষ ক্ষেত্রে, বা পয়েন্টারটিকে কোনও বস্তুর দিকে নির্দেশ করতে হবে। সুতরাং এটি আচরণ সংজ্ঞায়িত হয়।
১. যদি না কোনও মান লেখক এগিয়ে না আসে, বা যদি না আমরা যুক্তি সংক্রান্ত নথির অনুরূপ কিছু খুঁজে পাই যা জিনিসগুলিকে স্পষ্ট করে দেয়।