בעיה בפרוייקט בשפת c

MaorCS

New member
בעיה בפרוייקט בשפת c

יש לי בפרוייקט 3 קבצים: mine.h - קובץ header עם פרוטוטייפ של פונקציות function.c - קובץ המימושים של הפונקציות mine.c - קובץ ראשי (int main()) ברגע שאני מריץ, אני מקבל שגיאה: Linker error: _main defined in module mine.c is duplicated in module mine.c מה יכולה להיות הבעיה?
 

selalerer

New member
מה שנראה לי זה שיש לך איזשהי בעיה

בincludeים, מה שגורם לmine.c להתקמפל פעמיים ואז יש לך 2 main (יכול להיות שזאת לא הבעיה, זה סתם ניחוש מתוך ההודעת שגיאה). באיזה קובץ שמת inludeים לאיזה קובץ? באופן כללי אתה לא צריך להכליל (=לעשות include) לאף קובץ שהוא לא header וגם על הheader להגן בעזרת:
#ifndef MYHEADERNAME #define MYHEADERNAME​
בהתחלה, ובסוף:
#endif​
 

MaorCS

New member
טוב אז קודם כל "הגנתי" על ה header.

וכתבתי include "mine.h" גם בקובץ mine.c וגם בקובץ function.c
 

selalerer

New member
אתה בטוח שלא הכללת את mine.c

בטעות? נראה שהוא מקמפל את mine.c פעמיים. תנסה אולי לפתוח פרוייקט חדש ולייבא את הקבצים אליו ולראות אם זה עדיין קורה. באיזה סביבה אתה עובד? אתה יכול לחשוף את mine.h?
 

MaorCS

New member
בהתחלה לא הבנתי למה התכוונת..

אחר כך ניסיתי להוריד את הקובץ mine.c מהפרוייקט הרצתי אותו רגיל, וזה עבד.. אבל ככה זה אמור להיות? אני לא אמור לשים את הקובץ הראשי כחלק מהפרוייקט?
 

MaorCS

New member
אני לא מאמין!!!%^@$^

בגלל קטעים כאלה אני שונא את השפה הזאת! לפני רגע זה עבד!! לא נגעתי בכלום!! (או לפחות נראה לי ככה) פתאום אני מריץ והוא כותב לי: Linker Error: undefined symbol _main in module c0.asm מה הולך כאן? :(
 

vinney

Well-known member
הורדת את main.c מהפרוייקט

לא? זה מה שהבנתי מהודעה אחת לפני... אז למה אתה מתפלא שהוא פתאום חסר לך?
 

vinney

Well-known member
mine, סליחע, אזאכט תישלכת

תראה שאתה לא שם את גוף הפונקציה main בקובץ שאתה עושה לו INCLUDE.
 

MaorCS

New member
לא הבנתי אותך..

בקובץ שבו יש את הפונקציה main אני חייב לעשות include לקובץ header שלי..
 

MaorCS

New member
מצטער..

אני יודע על כאלה מהמכללה שלי שמסתובבים כאן בפורום ואני ממש לא רוצה שיעתיקו ממני את הפרוייקט.. תודה בכל זאת.. :\
 
למעלה