البته در حالت عادی تو هر کد نه شما می تونید کتابخانه استاتیک و دینامیک بنویسید که اصلاً به main نیازی نداره ولی اگر کد host قصد داشته باشید بنویسید همانطوری که دوستان گفتند بایستی یک entry point داشته باشید چون از طریق آن هم پارامترهای خط فرمان رو از کاربر می گیرید و هم در واقع در صورت نیاز کدی را به سیستم عامل برگشت می دید مثل بعضی از دستورات linux.
نکته : البته راه های غیر اصولی هم وجود داره که شما این قضیه رو دور بزنید و تابع main رو ننویسید همانطوری که دوستان عرض کردند main برنامه هم همانند یک constructor عمل می کنه و میاد entry point توی crt0.c رو فراخوانی می کنه حال شما می تونید بدون main یک متغیر سراسری استاتیک تعریف کنید که constructor آن اولین نقطه در برنامه شما باشه.