আমি প্রকৃত ভাষার মান উল্লেখ করে ইতিমধ্যে দেওয়া উত্তরগুলিতে যুক্ত করতে চাই।
'ইনট মেন;' একটি বৈধ সি প্রোগ্রাম?
সংক্ষিপ্ত উত্তর (আমার মতামত): কেবলমাত্র যদি আপনার বাস্তবায়নটি "ফ্রিস্ট্যান্ডিং কার্যকর মৃত্যুর পরিবেশ" ব্যবহার করে।
সি 11 থেকে নিম্নলিখিত সমস্ত উদ্ধৃতি
5. পরিবেশ
একটি বাস্তবায়ন সি উত্স ফাইলগুলি অনুবাদ করে এবং দুটি ডেটাপ্রসেসিং-সিস্টেম পরিবেশে সি প্রোগ্রামগুলি কার্যকর করে, যাকে অনুবাদ পরিবেশ এবং কার্যকরকরণ পরিবেশ বলা হবে [...]
5.1.2 কার্যকর করার পরিবেশ
দুটি কার্যকরকরণ পরিবেশকে সংজ্ঞায়িত করা হয়: ফ্রিস্ট্যান্ডিং এবং হোস্ট করা। উভয় ক্ষেত্রেই, প্রোগ্রাম স্টার্টআপটি ঘটে যখন নির্ধারিত পরিবেশ দ্বারা একটি মনোনীত সি ফাংশন ডাকা হয়।
5.1.2.1 ফ্রয়েস্ট্যান্ডিং পরিবেশ
একটি ফ্রিস্ট্যান্ডিং পরিবেশে (যে ক্ষেত্রে অপারেটিং সিস্টেমের কোনও সুবিধা ছাড়াই সি প্রোগ্রাম কার্যকর করা যেতে পারে), প্রোগ্রাম স্টার্টআপে ডাকা ফাংশনের নাম এবং প্রকারটি বাস্তবায়ন-সংজ্ঞায়িত।
5.1.2.2 হোস্ট পরিবেশ
একটি হোস্ট করা পরিবেশ সরবরাহ করার প্রয়োজন নেই, তবে উপস্থিত থাকলে নিম্নলিখিত বৈশিষ্ট্যগুলির সাথে সঙ্গতিপূর্ণ হবে।
5.1.2.2.1 প্রোগ্রাম সূচনা
প্রোগ্রাম স্টার্টআপ নামক ফাংশনটির নামকরণ করা হয় মূল । [...] এটি কোনও রিটার্ন টাইপ ইন্ট এবং কোনও পরামিতি [...] বা দুটি পরামিতি সহ [...] বা সমতুল্য বা অন্য কোনও বাস্তবায়ন-সংজ্ঞায়িত পদ্ধতিতে সংজ্ঞায়িত করা হবে।
এগুলি থেকে নিম্নলিখিতটি পর্যবেক্ষণ করা হচ্ছে:
- একটি সি 11 প্রোগ্রামে একটি ফ্রিস্ট্যান্ডিং বা হোস্টেড এক্সিকিউশন পরিবেশ থাকতে পারে এবং বৈধ হতে পারে।
- যদি এটি একটি ফ্রিস্ট্যান্ডিং থাকে তবে একটি প্রধান ফাংশন থাকার প্রয়োজন নেই।
- অন্যথায়, int টাইপের রিটার্ন ভ্যালির সাথে অবশ্যই একটি থাকতে হবে ।
একটি নির্ধারিত কার্যকরকরণের পরিবেশে, আমি যুক্তি দিয়ে বলব যে এটি একটি বৈধ প্রোগ্রাম যা প্রারম্ভিকাপটি ঘটতে দেয় না, কারণ 5.1.2 তে যেমন প্রয়োজন তেমন কোনও কার্য উপস্থিতি নেই। একটি হোস্টেড এক্সিকিউশন পরিবেশে, যখন আপনার কোডটি মুখ্য নামের একটি অবজেক্টের পরিচয় দেয় , এটি কোনও রিটার্ন মান প্রদান করতে পারে না, সুতরাং আমি যুক্তি দিয়ে বলব যে এটি এই অর্থে কোনও বৈধ প্রোগ্রাম নয়, যদিও প্রোগ্রামটি যদি না হয় তবে তার আগে কেউ এর মত তর্ক করতে পারে মৃত্যুদন্ড কার্যকর করার উদ্দেশ্যে (শুধুমাত্র উদাহরণস্বরূপ ডেটা সরবরাহ করতে চায়), তবে এটি কেবল এটি করার অনুমতি দেয় না।
'ইনট মেন;' একটি বৈধ সি ++ প্রোগ্রাম?
সংক্ষিপ্ত উত্তর (আমার মতামত): কেবলমাত্র যদি আপনার বাস্তবায়নটি "ফ্রিস্ট্যান্ডিং কার্যকর মৃত্যুর পরিবেশ" ব্যবহার করে।
সি ++ 14 থেকে উদ্ধৃতি
3.6.1 মূল ফাংশন
একটি প্রোগ্রামে মূল নামে একটি বিশ্বব্যাপী ফাংশন থাকবে যা প্রোগ্রামটির মনোনীত শুরু। এটি ফ্রিস্ট্যান্ডিং পরিবেশে কোনও প্রোগ্রামের কোনও মূল কার্যকারিতা সংজ্ঞায়িত করার প্রয়োজন কিনা তা বাস্তবায়ন-সংজ্ঞায়িত। [...] এটিতে প্রকারের রিটার্ন টাইপ থাকবে, তবে অন্যথায় এর প্রকারটি বাস্তবায়ন-সংজ্ঞায়িত। [...] নামটির নামটি অন্যথায় সংরক্ষিত নয়।
এখানে, সি 11 স্ট্যান্ডার্ডের বিপরীতে, বিনামূল্যে নিষেধাজ্ঞার পরিবেশের জন্য কম বিধিনিষেধগুলি প্রযোজ্য, কারণ কোনও স্টার্টআপ ফাংশন উল্লেখ করা হয়নি, যদিও কোনও হোস্টেড এক্সিকিউশন পরিবেশের ক্ষেত্রে, কেস 11 এর মতোই একইরকম।
আবার আমি যুক্তি দেব যে হোস্ট করা মামলার জন্য, আপনার কোডটি একটি বৈধ সি ++ 14 প্রোগ্রাম নয়, তবে আমি নিশ্চিত যে এটি ফ্রিস্ট্যান্ডিংয়ের ক্ষেত্রে।
যেহেতু আমার উত্তরটি কেবল মৃত্যুদন্ড কার্যকর করার পরিবেশটিকে বিবেচনা করে , তাই আমি মনে করি যে ড্যাসব্লিংকেনলিচ্ট উত্তরটি কার্যকর হয়েছে , কারণ অনুবাদ পরিবেশে নাম মাঙ্গলিং ঘটেছে আগেই happens এখানে, আমি এতটা নিশ্চিত নই যে উপরের উদ্ধৃতিগুলি এত কঠোরভাবে পর্যবেক্ষণ করা হয়েছে।
gcc -std=c99 -pedantic ...