আমাকে সম্প্রতি একটি ছোট সি পরীক্ষামূলক প্রোগ্রাম টাইপ করতে হয়েছিল এবং প্রক্রিয়াধীন, আমি ঘটনাক্রমে vooidপরিবর্তে ব্যবহার করে মূল ফাংশনে একটি বানান ভুল করেছিলাম void।
এবং এখনও এটি কাজ করে।
এটিকে এর ক্ষুদ্রতম সম্পূর্ণ সংস্করণে হ্রাস করে, আমি এখানেই শেষ করেছি:
int main (vooid) {
return 42;
}
এটি প্রকৃতপক্ষে সংকলন করে ( gcc -Wall -o myprog myprog.c) এবং যখন চালানো হয় তখন তা 42 দেয়।
এই বৈধ কোডটি ঠিক কীভাবে?
bashআমি কী করছি তা দেখানোর জন্য এখানে আমার শেল থেকে একটি প্রতিলিপি কাটা এবং আটকানো হয়েছে :
pax$ cat qq.c
int main (vooid) {
return 42;
}
pax$ rm qq ; gcc -Wall -o qq qq.c ; ./qq
pax$ echo $?
42
mainস্ট্যান্ডার্ড দুটি ক্যানোনিকাল সংক্রান্ত অন্যান্য সম্ভাবনার জন্য অনুমতি দেয় । বহনযোগ্যতার জন্য, আপনার এই দুটির মধ্যে একটি ব্যবহার করা উচিত তবে আমি মনে করি না ইউবি এখানে প্রযোজ্য।
mainহুঁ : হোস্ট করা পরিবেশে অবশ্যই 2 টি ক্যানোনিকাল ফর্মের একটি থাকতে হবে (2.1.2.2)। তবে আপনি ঠিক @ প্যাক্স, একটি মুক্ত-স্থিত পরিবেশে, শনাক্তকারী কোনওভাবেই mainবিশেষ নয়: যদি কোনও ফাংশন হিসাবে ব্যবহৃত হয় তবে এটি কোনও ধরণের হতে পারে এবং যে কোনও ধরণের প্যারামিটারের সংখ্যা থাকতে পারে।
int main (int argc, char *argv[], char *envp[]);হয় তবে অন্যগুলিও থাকতে পারে (এটি ইউনিক্সকে মেনে চলতে দেয় )।
intপ্যারামিটারের সাহায্যে প্রধানকে সংজ্ঞায়িত করে আপনি অনির্ধারিত আচরণটি শুরু করবেন । যে কোনও কিছু ঘটতে পারে :)