স্ট্যান্ডার্ড সি - হোস্ট করা পরিবেশ
একটি হোস্ট করা পরিবেশের জন্য (এটি সাধারণ একটি), সি 11 স্ট্যান্ডার্ড (আইএসও / আইইসি 9899: 2011) বলেছেন:
5.1.2.2.1 প্রোগ্রাম সূচনা
প্রোগ্রাম স্টার্টআপ নামক ফাংশনটির নাম দেওয়া হয়েছে main
। বাস্তবায়ন এই ফাংশনের জন্য কোনও প্রোটোটাইপ ঘোষণা করে না। এটি কোনও রিটার্ন ধরণের int
এবং কোনও পরামিতি ছাড়াই সংজ্ঞায়িত করা হবে :
int main(void) { /* ... */ }
বা দুটি প্যারামিটার সহ (এখানে হিসাবে উল্লেখ করা হয় argc
এবং argv
, যদিও কোনও নাম ব্যবহার করা যেতে পারে, কারণ তারা যে ফাংশনটিতে তারা ঘোষিত হয় তেমন স্থানীয়):
int main(int argc, char *argv[]) { /* ... */ }
বা সমমানের; 10) বা অন্য কোনও বাস্তবায়ন-সংজ্ঞায়িত পদ্ধতিতে।
যদি সেগুলি ঘোষিত হয় তবে মূল ফাংশনের প্যারামিটারগুলি নিম্নলিখিত সীমাবদ্ধতাগুলি মেনে চলবে:
- মান
argc
হ'ল ননজেটিভ।
argv[argc]
একটি নাল পয়েন্টার হতে হবে।
- মানটি যদি
argc
শূন্যের চেয়ে বেশি argv[0]
হয় তবে argv[argc-1]
অন্তর্ভুক্তির মাধ্যমে
অ্যারে সদস্যগুলির মধ্যে স্ট্রিংয়ের পয়েন্টার থাকতে হবে যা প্রোগ্রাম শুরু হওয়ার আগে হোস্ট পরিবেশ দ্বারা বাস্তবায়ন-সংজ্ঞায়িত মান দেওয়া হয়। উদ্দেশ্যটি হ'ল পরিবেশযুক্ত পরিবেশে অন্য কোথাও থেকে প্রোগ্রাম শুরু হওয়ার আগে নির্ধারিত প্রোগ্রামের তথ্য সরবরাহ করা। হোস্ট এনভায়রনমেন্ট যদি বড় হাতের এবং ছোট হাতের অক্ষরে অক্ষর দিয়ে স্ট্রিং সরবরাহ করতে সক্ষম না হয় তবে বাস্তবায়ন নিশ্চিত করে যে স্ট্রিংগুলি ছোট হাতের মধ্যে প্রাপ্ত হয়েছে।
- মানটি যদি
argc
শূন্যের চেয়ে বেশি হয় তবে নির্দেশিত স্ট্রিং argv[0]
প্রোগ্রামটির নাম উপস্থাপন করে; argv[0][0]
হোস্ট পরিবেশ থেকে প্রোগ্রামের নামটি উপলব্ধ না হলে নাল অক্ষর হবে। তাহলে এর মান argc
এক চেয়ে অনেক বেশী, স্ট্রিং দ্বারা প্রতি ইঙ্গিত argv[1]
মাধ্যমে argv[argc-1]
প্রোগ্রাম পরামিতি প্রতিনিধিত্ব করে।
- অ্যারে দ্বারা নির্দেশিত প্যারামিটারগুলি
argc
এবং argv
স্ট্রিংগুলি argv
প্রোগ্রাম দ্বারা পরিবর্তনযোগ্য হবে এবং প্রোগ্রাম স্টার্টআপ এবং প্রোগ্রাম সমাপ্তির মধ্যে তাদের শেষ-সঞ্চিত মান বজায় রাখতে পারে।
10) সুতরাং, int
সংজ্ঞায়িত টাইপএফ নাম দ্বারা প্রতিস্থাপন করা যেতে পারে int
, বা প্রকারের argv
মতো লিখতে
char **argv
পারেন ইত্যাদি।
সি 99 বা সি 11 এ প্রোগ্রাম সমাপ্তি
প্রত্যাবর্তিত মানটি main()
বাস্তবায়ন-সংজ্ঞায়িত উপায়ে 'পরিবেশে' প্রেরণ করা হয়।
5.1.2.2.3 প্রোগ্রাম সমাপ্তি
1 যদি main
ফাংশনের রিটার্ন ধরণের সাথে সামঞ্জস্যপূর্ণ টাইপ int
হয় তবে প্রাথমিক কল থেকে main
ফাংশনে exit
ফিরে আসা main
ফাংশনটিকে তার আর্গুমেন্ট হিসাবে ফিরিয়ে দেওয়া মান দিয়ে কল করার সমতুল্য ; ১১) ফাংশনটি সমাপ্ত হওয়াতে পৌঁছানো ০ এর মান }
দেয় the
main
যদি রিটার্ন টাইপের সাথে সামঞ্জস্য না int
হয় তবে হোস্ট পরিবেশে ফিরে আসা সমাপ্তির স্থিতি অনির্দিষ্ট।
১১) .2.২.৪ অনুসারে, ঘোষিত স্বয়ংক্রিয় স্টোরেজ সময়কালের সাথে অবজেক্টগুলির জীবনকাল main
পূর্ববর্তী ক্ষেত্রে শেষ হয়ে যাবে, এমনকি যেখানে তাদের উত্তর নেই।
লক্ষ্য করুন 0
'সাফল্য' হিসেবে বাধ্যতামূলক করা হয়। আপনি ব্যবহার করতে পারেন EXIT_FAILURE
এবং EXIT_SUCCESS
থেকে <stdlib.h>
আপনি যদি চান, কিন্তু 0 সুপ্রতিষ্ঠিত হয়, এবং তাই 1. দেখুন হয় প্রস্থান করুন কোডের চেয়ে 255 বৃহত্তর - কি সম্ভব? ।
C89-তে (এবং তাই মাইক্রোসফ্ট সি-তে), main()
ফাংশনটি ফিরে আসে তবে কোনও রিটার্নের মান নির্দিষ্ট করে না তবে কী হয় সে সম্পর্কে কোনও বিবৃতি নেই; সুতরাং এটি অপরিবর্তিত আচরণের দিকে পরিচালিত করে।
7.22.4.4 exit
ফাংশন
Finally5 অবশেষে, নিয়ন্ত্রণ হোস্ট পরিবেশে ফিরে আসে। মানটি status
যদি শূন্য হয় বা EXIT_SUCCESS
, স্থিতি সফল সমাপ্তির একটি বাস্তবায়ন-সংজ্ঞায়িত ফর্মটি ফিরে আসে। যদি এর মান status
হয় EXIT_FAILURE
তবে স্থিতির অসমাপ্ত সমাপ্তির একটি বাস্তবায়ন-সংজ্ঞায়িত ফর্মটি ফেরত দেওয়া হয়। অন্যথায় স্থিতিটি বাস্তবায়ন-সংজ্ঞায়িত।
স্ট্যান্ডার্ড সি ++ - হোস্ট করা পরিবেশ
সি ++ 11 স্ট্যান্ডার্ড (আইএসও / আইইসি 14882: 2011) বলেছেন:
৩.6.১ মূল ফাংশন [বেসিক.স্টার্ট.মাইন]
¶1 একটি প্রোগ্রামে মূল নামে একটি বিশ্বব্যাপী ফাংশন থাকবে যা প্রোগ্রামটির মনোনীত শুরু। [...]
.2 একটি বাস্তবায়ন মূল ফাংশনটিকে পূর্বনির্ধারিত করে না। এই ফাংশনটি ওভারলোড হবে না। এটিতে টাইপ ইন্টির একটি রিটার্ন টাইপ থাকবে, তবে অন্যথায় এর প্রকারটি বাস্তবায়িত সংজ্ঞায়িত। সমস্ত বাস্তবায়ন নিম্নলিখিত উভয় মূল সংজ্ঞা দিতে অনুমতি দেবে:
int main() { /* ... */ }
এবং
int main(int argc, char* argv[]) { /* ... */ }
পরবর্তী আকারে argc
প্রোগ্রামটি পরিবেশিত হয় এমন পরিবেশ থেকে প্রোগ্রামটিতে পাস হওয়া আর্গুমেন্টের সংখ্যা হবে। যদি argc
হয় অশূন্য এই আর্গুমেন্ট মধ্যে সরবরাহ করা হইবে argv[0]
মাধ্যমে argv[argc-1]
নাল-সমাপ্ত multibyte স্ট্রিং প্রাথমিক অক্ষর (NTMBSs) (17.5.2.1.4.2) পয়েন্টার এবং argv[0]
একটি NTMBS প্রাথমিক অক্ষরে পয়েন্টার যে করার জন্য ব্যবহৃত নাম প্রতিনিধিত্ব করে হইবে প্রোগ্রাম প্রার্থনা বা ""
। এর মান argc
অ-নেতিবাচক হবে। মান হতে argv[argc]
হবে 0। [দ্রষ্টব্য: এটির পরে আরও (alচ্ছিক) পরামিতি যুক্ত করার পরামর্শ দেওয়া হয় argv
। অন্তর্ভুক্ত নোট]
.3 ফাংশনটি main
কোনও প্রোগ্রামের মধ্যে ব্যবহার করা হবে না। এর যোগসূত্রটি (3.5) main
বাস্তবায়ন-সংজ্ঞায়িত। [...]
¶5 মূলত একটি রিটার্ন স্টেটমেন্টের মূল ফাংশন (স্বয়ংক্রিয় স্টোরেজ সময়কাল সহ কোনও বস্তু ধ্বংস) এবং std::exit
আর্গুমেন্ট হিসাবে রিটার্ন মান সহ কল করার প্রভাব রয়েছে । রিটার্নের বিবৃতি না পেয়ে নিয়ন্ত্রণ যদি প্রধানের শেষ প্রান্তে পৌঁছায় তবে প্রভাব কার্যকর হয়
return 0;
সি ++ স্ট্যান্ডার্ড স্পষ্টভাবে বলেছে "এটি [মূল ফাংশন] এর একটি রিটার্ন টাইপ থাকতে হবে int
, তবে অন্যথায় এর ধরণটি বাস্তবায়ন সংজ্ঞায়িত করা হয়", এবং সি স্ট্যান্ডার্ড হিসাবে একই দুটি স্বাক্ষর অপশন হিসাবে সমর্থিত হওয়া দরকার। সুতরাং একটি 'অকার্যকর মেইন ()' সি ++ স্ট্যান্ডার্ড দ্বারা সরাসরি অনুমোদিত নয়, যদিও বিকল্পের অনুমতি দিয়ে অ-মানক বাস্তবায়ন বন্ধ করতে এর কিছুই করতে পারে না। নোট করুন যে সি ++ ব্যবহারকারীকে কল করতে নিষেধ করেছে main
(তবে সি স্ট্যান্ডার্ডটি তা করে না)।
সেখানে §18.5 একটি অনুচ্ছেদ এর স্টার্ট এবং পরিসমাপ্তি সি 11 মান মধ্যে ++, যে §7.22.4.4 থেকে অনুচ্ছেদে অভিন্ন ফাংশন C11 মান মধ্যে (উপরে উদ্ধৃত), পৃথক্ একটি পাদটীকা থেকে (যা কেবল যে দস্তাবেজগুলি এবং সংজ্ঞায়িত করা হয় in )।exit
EXIT_SUCCESS
EXIT_FAILURE
<cstdlib>
স্ট্যান্ডার্ড সি - কমন এক্সটেনশন
শাস্ত্রীয়ভাবে, ইউনিক্স সিস্টেমগুলি একটি তৃতীয় বৈকল্পিক সমর্থন করে:
int main(int argc, char **argv, char **envp) { ... }
তৃতীয় আর্গুমেন্টটি হল স্ট্রিংগুলিতে পয়েন্টারগুলির একটি নাল-টার্মিনেটেড তালিকা, যার প্রত্যেকটি একটি পরিবেশের ভেরিয়েবল যার একটি নাম, সমান চিহ্ন এবং মান (সম্ভবত শূন্য) রয়েছে। আপনি যদি এটি ব্যবহার না করেন তবে ' extern char **environ;
' এর মাধ্যমে আপনি পরিবেশে পেতে পারেন । এই গ্লোবাল ভেরিয়েবলটি পসিক্সের মধ্যে এটির মধ্যেই অনন্য that
এটি আনেকেক্স জে নথিভুক্ত সাধারণ মান হিসাবে সি স্ট্যান্ডার্ড দ্বারা স্বীকৃত:
J.5.1 পরিবেশ যুক্তি
¶1 একটি হোস্ট করা পরিবেশে, মূল ফাংশনটি একটি তৃতীয় যুক্তি পায় char *envp[]
, যা পয়েন্টারগুলির একটি নাল-টার্মিনেটেড অ্যারে নির্দেশ char
করে, যার প্রত্যেকটি একটি স্ট্রিংকে নির্দেশ করে যা প্রোগ্রামটির এই সম্পাদনের জন্য পরিবেশ সম্পর্কে তথ্য সরবরাহ করে (5.1)। 2.2.1)।
মাইক্রোসফ্ট সি
মাইক্রোসফট বনাম 2010 কম্পাইলার আকর্ষণীয়। ওয়েব সাইটটি বলে:
মূল জন্য ঘোষণার বাক্য গঠন
int main();
বা, allyচ্ছিকভাবে,
int main(int argc, char *argv[], char *envp[]);
বিকল্পভাবে, main
এবং wmain
ফাংশনগুলি void
রিটার্ন হিসাবে ঘোষণা করা যেতে পারে (কোনও ফেরতের মূল্য নেই)। আপনি যদি ঘোষিত হন main
বা wmain
প্রত্যাবর্তন শূন্য হিসাবে ঘোষণা করেন , আপনি কোনও রিটার্ন স্টেটমেন্ট ব্যবহার করে প্যারেন্ট প্রসেস বা অপারেটিং সিস্টেমে একটি প্রস্থান কোড ফেরত দিতে পারবেন না। যখন বহিরাগত কোডটি প্রকাশিত হবে main
বা wmain
হিসাবে ঘোষিত void
হবে, আপনাকে অবশ্যই exit
ফাংশনটি ব্যবহার করতে হবে ।
আমার সাথে এটি স্পষ্ট নয় যে যখন কোনও প্রোগ্রাম void main()
প্রস্থান করে তখন কী ঘটে (কোন প্রস্থান কোডটি প্যারেন্ট বা OS এ ফিরে আসে) - এবং এমএস ওয়েবসাইটটিও নীরব।
মজার বিষয় হল, এমএস main()
সি এবং সি ++ মানের যে দ্বি-যুক্তির সংস্করণটি প্রয়োজন সেগুলি লিখে দেয় না । এটি কেবলমাত্র তিনটি আর্গুমেন্ট ফর্ম নির্ধারণ করে যেখানে তৃতীয় আর্গুমেন্ট char **envp
, পরিবেশের ভেরিয়েবলগুলির তালিকার একটি পয়েন্টার।
মাইক্রোসফ্ট পৃষ্ঠায় কিছু অন্যান্য বিকল্পের তালিকাও রয়েছে - wmain()
যা প্রশস্ত চরিত্রের স্ট্রিং গ্রহণ করে এবং আরও কিছু।
এই পৃষ্ঠার মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও 2005 সংস্করণটি বিকল্প হিসাবে তালিকাভুক্ত নয় । মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও ২০০৮ এর সংস্করণগুলি এখনও তা করে।void main()
স্ট্যান্ডার্ড সি - ফ্রিস্ট্যান্ডিং পরিবেশ
প্রথমদিকে যেমন উল্লেখ করা হয়েছে, উপরের প্রয়োজনীয়তাগুলি হোস্ট করা পরিবেশে প্রযোজ্য। যদি আপনি একটি ফ্রিস্ট্যান্ডিং এনভায়রনমেন্ট (যা কোনও হোস্ট করা পরিবেশের বিকল্প) নিয়ে কাজ করছেন, তবে স্ট্যান্ডার্ডটি বলার অপেক্ষা রাখে না। ফ্রিস্ট্যান্ডিং পরিবেশের জন্য, প্রোগ্রাম স্টার্টআপে ডাকা ফাংশনটি কল করার প্রয়োজন নেই main
এবং এর ফেরতের ধরণের কোনও বাধা নেই। মান বলেছেন:
5.1.2 কার্যকর করার পরিবেশ
দুটি কার্যকরকরণ পরিবেশকে সংজ্ঞায়িত করা হয়: ফ্রিস্ট্যান্ডিং এবং হোস্ট করা। উভয় ক্ষেত্রেই, প্রোগ্রাম স্টার্টআপটি ঘটে যখন নির্ধারিত পরিবেশ দ্বারা একটি মনোনীত সি ফাংশন ডাকা হয়। স্ট্যাটিক স্টোরেজ সময়কাল সহ সমস্ত বস্তু প্রোগ্রাম শুরু হওয়ার আগেই (তাদের প্রাথমিক মানগুলিতে সেট করা) শুরু করা হবে। এ জাতীয় সূচনা করার পদ্ধতি এবং সময় অন্যথায় অনির্দিষ্ট। প্রোগ্রাম সমাপ্তি কার্যকরকরণের পরিবেশে নিয়ন্ত্রণ ফিরিয়ে দেয়।
5.1.2.1 ফ্রয়েস্ট্যান্ডিং পরিবেশ
একটি ফ্রিস্ট্যান্ডিং পরিবেশে (যে ক্ষেত্রে অপারেটিং সিস্টেমের কোনও সুবিধা ছাড়াই সি প্রোগ্রাম কার্যকর করা যেতে পারে), প্রোগ্রাম স্টার্টআপে ডাকা ফাংশনের নাম এবং প্রকারটি বাস্তবায়ন-সংজ্ঞায়িত। ধারা 4 দ্বারা প্রয়োজনীয় ন্যূনতম সেট ব্যতীত কোনও ফ্রিস্ট্যান্ডিং প্রোগ্রামে উপলব্ধ যে কোনও গ্রন্থাগার সুবিধা বাস্তবায়ন-সংজ্ঞায়িত।
ফ্রিস্ট্যান্ডিং পরিবেশে প্রোগ্রামের সমাপ্তির প্রভাব বাস্তবায়ন-সংজ্ঞায়িত।
ধারা ৪ কনফারেন্সের ক্রস-রেফারেন্স এটিকে বোঝায়:
¶5 একটি কঠোরভাবে মেনে চলার প্রোগ্রামটিতে এই আন্তর্জাতিক স্ট্যান্ডার্ডে বর্ণিত ভাষা এবং গ্রন্থাগারের কেবল সেই বৈশিষ্ট্যই ব্যবহার করা উচিত। 3) এটি কোনও অনির্ধারিত, অপরিজ্ঞাত বা বাস্তবায়ন-সংজ্ঞায়িত আচরণের উপর নির্ভরশীল আউটপুট উত্পাদন করবে না এবং কোনও ন্যূনতম বাস্তবায়ন সীমা ছাড়িয়ে যাবে না।
¶6 অনুসারে বাস্তবায়নের দুটি ফর্ম হোস্ট করা এবং ফ্রিস্ট্যান্ডিং । একটি অনুসারী হোস্টিং বাস্তবায়ন যে কোনও কঠোরভাবে মেনে চলার প্রোগ্রাম গ্রহণ করবে। একজন অনুসারী freestanding বাস্তবায়ন কোনো কঠোরভাবে অনুসারী প্রোগ্রাম যা গ্রন্থাগার দফা (ধারা 7) উল্লেখিত বৈশিষ্ট্যের ব্যবহার মান হেডার বিষয়বস্তুর সীমাবদ্ধ হয় গ্রহণ করিবে <float.h>
, <iso646.h>
, <limits.h>
, <stdalign.h>
,
<stdarg.h>
, <stdbool.h>
, <stddef.h>
, <stdint.h>
, এবং
<stdnoreturn.h>
। একটি মেনে চলার বাস্তবায়নের এক্সটেনশন (অতিরিক্ত গ্রন্থাগার ফাংশন সহ) থাকতে পারে, তবে তারা কোনও কঠোরভাবে মেনে চলার প্রোগ্রামের আচরণকে পরিবর্তন না করে। 4)
¶7 একটি কনফার্মিং প্রোগ্রাম হ'ল যা একটি অনুসারী বাস্তবায়নের জন্য গ্রহণযোগ্য। 5)
3) একটি কঠোরভাবে মেনে চলার প্রোগ্রামটি শর্তাধীন বৈশিষ্ট্যগুলি (6.10.8.3 দেখুন) ব্যবহার করতে পারে তবে সরবরাহটি সম্পর্কিত ম্যাক্রো ব্যবহার করে উপযুক্ত শর্তযুক্ত অন্তর্ভুক্তি প্রিপ্রোসেসিং নির্দেশিকা দ্বারা রক্ষিত থাকে। উদাহরণ স্বরূপ:
#ifdef __STDC_IEC_559__ /* FE_UPWARD defined */
/* ... */
fesetround(FE_UPWARD);
/* ... */
#endif
৪) এর দ্বারা বোঝা যায় যে একটি আনুগত্য বাস্তবায়ন এই আন্তর্জাতিক স্ট্যান্ডার্ডে স্পষ্টভাবে সংরক্ষিত ছাড়া অন্য কোনও সনাক্তকারী সংরক্ষণ করে না।
5) কঠোরভাবে মেনে চলার প্রোগ্রামগুলি বাস্তবায়ন বাস্তবায়নের মধ্যে সর্বাধিক বহনযোগ্য হতে চলেছে। মেনে চলার প্রোগ্রামগুলি মাপসই বাস্তবায়নের অ-বহনযোগ্য বৈশিষ্ট্যগুলির উপর নির্ভর করে।
এটি লক্ষণীয় যে কেবলমাত্র একটি ফ্রিস্ট্যান্ডিং পরিবেশের প্রয়োজন যা কেবল কোনও ফাংশনকে সংজ্ঞায়িত করে <stdarg.h>
(এবং এমনকি এটিগুলি হতে পারে - এবং প্রায়শই - কেবল ম্যাক্রোগুলি)।
স্ট্যান্ডার্ড সি ++ - ফ্রিস্ট্যান্ডিং পরিবেশ
সি স্ট্যান্ডার্ড যেমন আয়োজিত এবং ফ্রিস্ট্যান্ডিং পরিবেশ উভয়কেই স্বীকৃতি দেয় তেমনই সি ++ স্ট্যান্ডার্ডটিও করে। (আইএসও / আইসিসি থেকে উদ্ধৃতি 14882: 2011।)
1.4 বাস্তবায়ন সম্মতি [intro.comp Equipment]
.7 দুটি ধরণের বাস্তবায়ন সংজ্ঞায়িত করা হয়: একটি হোস্টেড বাস্তবায়ন এবং একটি ফ্রিস্ট্যান্ডিং বাস্তবায়ন । একটি হোস্টেড প্রয়োগের জন্য, এই আন্তর্জাতিক স্ট্যান্ডার্ড উপলব্ধ গ্রন্থাগারগুলির সেটকে সংজ্ঞায়িত করে। একটি ফ্রিস্ট্যান্ডিং বাস্তবায়ন হ'ল একটি অপারেটিং সিস্টেমের সুবিধা ছাড়াই কার্যকর করা যেতে পারে এবং এর জন্য একটি প্রয়োগ-সংজ্ঞায়িত গ্রন্থাগার রয়েছে যা কিছু নির্দিষ্ট ভাষা-সমর্থন লাইব্রেরি (17.6.1.3) অন্তর্ভুক্ত করে।
¶8 একটি মেনে চলার বাস্তবায়নের এক্সটেনশন (অতিরিক্ত গ্রন্থাগার ফাংশন সহ) থাকতে পারে তবে শর্ত থাকে যে তারা কোনও সুগঠিত প্রোগ্রামের আচরণের পরিবর্তন না করে। এই আন্তর্জাতিক স্ট্যান্ডার্ড অনুসারে এই জাতীয় এক্সটেনশানগুলি ব্যবহার করে যা দুর্বৃত্ত রয়েছে এমন প্রোগ্রামগুলি নির্ণয়ের জন্য প্রয়োগগুলি প্রয়োজন are তবে এটি করার পরে তারা এ জাতীয় প্রোগ্রামগুলি সংকলন ও সম্পাদন করতে পারে।
Implementation9 প্রতিটি বাস্তবায়নের মধ্যে ডকুমেন্টেশন অন্তর্ভুক্ত থাকবে যা শর্তাধীন-সমর্থিত সমস্ত কনস্ট্রাক্টসকে সনাক্ত করে যা এটি স্থানীয়ভাবে নির্দিষ্ট বৈশিষ্ট্যগুলি সমর্থন করে না এবং সংজ্ঞা দেয়। 3
3) এই ডকুমেন্টেশন বাস্তবায়ন সংজ্ঞায়িত আচরণও সংজ্ঞায়িত করে; 1.9 দেখুন।
17.6.1.3 নিখরচায় বাস্তবায়ন [সম্মতি]
দুটি ধরণের বাস্তবায়ন সংজ্ঞায়িত করা হয়: হোস্টেড এবং ফ্রিস্ট্যান্ডিং (1.4)। হোস্টেড প্রয়োগের জন্য, এই আন্তর্জাতিক স্ট্যান্ডার্ডটি উপলব্ধ শিরোনামগুলির সেটটি বর্ণনা করে।
একটি ফ্রিস্ট্যান্ডিং বাস্তবায়নে একটি শিরোনামের প্রয়োগ-সংজ্ঞায়িত সেট থাকে। এই সেটটিতে সারণী 16-এ প্রদর্শিত কমপক্ষে শিরোনাম অন্তর্ভুক্ত করা উচিত।
শিরোনামের সরবরাহকৃত সংস্করণ <cstdlib>
ঘোষণা করবে অন্তত ফাংশন abort
, atexit
, at_quick_exit
, exit
, এবং quick_exit
(18.5)। এই টেবিলের তালিকাভুক্ত অন্যান্য শিরোনামগুলি হোস্টেড বাস্তবায়ন হিসাবে একই প্রয়োজনীয়তাগুলি পূরণ করবে।
সারণী 16 - ফ্রিস্ট্যান্ডিং বাস্তবায়নের জন্য সি ++ শিরোনাম
Subclause Header(s)
<ciso646>
18.2 Types <cstddef>
18.3 Implementation properties <cfloat> <limits> <climits>
18.4 Integer types <cstdint>
18.5 Start and termination <cstdlib>
18.6 Dynamic memory management <new>
18.7 Type identification <typeinfo>
18.8 Exception handling <exception>
18.9 Initializer lists <initializer_list>
18.10 Other runtime support <cstdalign> <cstdarg> <cstdbool>
20.9 Type traits <type_traits>
29 Atomics <atomic>
int main()
সি ব্যবহারের কী হবে ?
সি 11 স্ট্যান্ডার্ডের §5.1.2.2.2.1 স্ট্যান্ডার্ডটি পছন্দসই স্বরলিপিটি দেখায় - int main(void)
- তবে মানকটিতে দুটি উদাহরণ রয়েছে যা দেখায় int main()
: §6.5.3.4 ¶8 এবং .76.7.6.3 ¶20 । এখন, এটি লক্ষ করা গুরুত্বপূর্ণ যে উদাহরণগুলি 'আদর্শিক' নয়; এগুলি কেবল বর্ণনামূলক। উদাহরণগুলিতে বাগ থাকলে, তারা সরাসরি স্ট্যান্ডার্ডের মূল পাঠ্যকে প্রভাবিত করে না। এটি বলেছিল, তারা প্রত্যাশিত আচরণের দৃ strongly়ভাবে সূচক, সুতরাং যদি মানটি int main()
উদাহরণের মধ্যে অন্তর্ভুক্ত করে তবে এটি প্রস্তাব দেয় যে int main()
এটি নিষিদ্ধ নয়, এমনকি যদি এটি পছন্দসই স্বরলিপি নাও হয়।
6.5.3.4 sizeof
ও _Alignof
অপারেটরগুলি
...
¶8 উদাহরণ 3 এই উদাহরণে, একটি চলক দৈর্ঘ্যের অ্যারের আকার গণনা করা হয় এবং একটি ফাংশন থেকে ফিরে আসে:
#include <stddef.h>
size_t fsize3(int n)
{
char b[n+3]; // variable length array
return sizeof b; // execution time sizeof
}
int main()
{
size_t size;
size = fsize3(10); // fsize3 returns 13
return 0;
}