نقل قول نوشته شده توسط iirannn مشاهده تاپیک
سلام.
#include <dos.h>
void palette(int pnum)
{
union REGS r ;
r.h.bh = 1 ; /* code for mode 4 */
r.h.bl = pnum ;
r.h.ah = 0xb ;
int86(0x10, &r, &r) ;
}


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