ورود

View Full Version : gcc



tazekaram
جمعه 19 مرداد 1386, 01:45 صبح
سلام
از اساتید کسی می دونه چطوری یه فایل هدر دستی رو به یه برنامه سی با gcc لینک می کنند
مثلا تو تعریف هدر فایل های من یه هدر به صورت زیر هست ولی موقع کامپایل برنامه با gcc می گه که این فایل رو نمیشناسه؟؟؟؟؟؟؟؟؟؟؟


#include "myheader.h"

shaniaki
جمعه 19 مرداد 1386, 14:02 عصر
با عرض ادب:
سوئیچ I- دستور gcc رو مطالعه کنید.

یه ... ...

imand
شنبه 20 مرداد 1386, 22:20 عصر
هدر فایل ها به برنامه لینک نمیشن . بلکه قبل از کامپایل کد برنامه محتویاتشون داخل فایلی که اونها رو فراخوانی کرده کپی میشن ...

خوب حالا شاید بپرسی که علتش چی هست ؟
همونطور که میدونی در زبان سی باید توابعی رو که تو تابع main() استفاده میکنی . حتما تعریف تابع رو قبل از تابع main بیاری . بطور مثال :

void stuff(int); l
int main(void); l
{
stuff(); l
...
}

void stuff(int s){ l
....
}

همونطوری که میبینی تعریف تابع stuff قبل از تابع main آمد .

حالا یه کار دیگه هم میتونی بکنی :
تعریف تابع رو تو فایلی به نام myheader.h بنویسی و بعد فایل رو به صورت
include "myheader.h"
فراخوانی کنی
این کار باعث میشه که وقتی gcc رو فراخوانی می کنی . کامپایلر قبل از کامپایل کد محتویات فایل myheader.h رو تو فایل اصلی ( قبل از تابع main ) قرار میده ...

حالا من ار تو یه سوال دارم :
توابعی مثل printf که تو سی ازشون استفاده میکنیم چطوری تعریفشون میکنیم ؟

حالا بریم سر جواب سوال تو :
اگرهدر فایل رو اینطوری فراخوانی کنی :
include "myheader.h" l یعنی اگه از " " استفاده کنی کامپایلر مسیری رو که فایل اصل وجود داره رو برای پیدا کردن myheader.h استفاده می کنه . پس باید فایل myheader.h رو تو مسیر جاری بزاری ...

اگر هدر فایل رو به این فرمت فراخوانی کنی :
include <stdio.h> l ینی اینکه gcc باید فایل رو تو مسیر های پیش فرضی مثل
/usr/include l/ دنبال بگرده ...