আমাকে সম্প্রতি একটি ছোট সি পরীক্ষামূলক প্রোগ্রাম টাইপ করতে হয়েছিল এবং প্রক্রিয়াধীন, আমি ঘটনাক্রমে 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
প্যারামিটারের সাহায্যে প্রধানকে সংজ্ঞায়িত করে আপনি অনির্ধারিত আচরণটি শুরু করবেন । যে কোনও কিছু ঘটতে পারে :)