چون کد ایرادی نداره، اما لینکر برای ساختن فایل اجرایی exe دنبال یک تعریف برای main function میگرده که چون همچین تابعی ندارید پیداش نمی کنه.
دقت کنید که اسم فایل میتونه هر چیزی باشه، تاثیر نداره، اینکه اسم فایلی main().c باشه ارتباطی با اینکه تابع ()main ای تعریف کرده باشید یا نکرده باشید نداره.
وقتی اون فایل exe اجرا میشه باید یک روال آغازین رو اجرا کنه، مثلا در ++C یک ()int main ای هست که تابع آغازین برنامه است. که باید کدش رو بنویسید.
اون palette رو نوشته اید ولی خود به خود که فراخوانی نمیشه. باید در کدی مثلا داخل ()int main ازش استفاده کنید تا فراخوانی بشه.
تصور کنید که این فایل اجرایی exe شروع به اجرا کنه، با اجرای چه متدی باید شروع کنه؟ با اجرای palette که شروع نمی کنه، یک main میخواد.