בעיה מעצבנת בסי++..

smasher

New member
בעיה מעצבנת בסי++..

אני משתמש בטורבו סי++ של בורלנד. היום נתקלתי בבעיה שלא הייתה לי עד עכשיו ואני עדיין לא הצלחתי להתגבר עליה. הבעיה היא - Linker Error - משהו כמו - הפרמטר X שהוגדר בקובץ A.cpp מוגדר שוב בקובץ B.cpp. עכשיו הפרמטר X מוגדר בקובץ C.h. הבעיה היחידה אני חושב שיכולה להיות היא שאני קורא לקובץ C.h כמה פעמים ואז X מוגדר שוב ושוב. אבל בדיוק בשביל זה יש בקובץ C.h -
#ifndef __DEF__ #define __DEF__ . . . #end if​
שזה אמור למנוע את המצב הזה... בכל קובץ cpp. שאני מכיל-
#include "C.h"​
יש את הארור הזה... יש למישהו פתרון
תודה מראש..
 

vinney

Well-known member
תעשה BUILD CLEAN

ותנסה שוב אתה מקמפל את כל אחד מהCPPים בנפרד? אני לא יודע איך זה בבורלנד, אבל בMS הDEFINEים נשמרים בין יחידות הקומפילציה באותו פרוייקט.
 

smasher

New member
מה זה BUILD CLEAN ?

וכל הקבצי CPP. תחת פרוייקט אחד, ככה שאני מניח שהם מקומפלים כולם ביחד..
 

vinney

Well-known member
זה

כשאתה מוחק תוצרים מהקומפילציות הקודמות. הקומפיילר עושה את זה רק אם אתה משנה את הקובץ שקומפל, ואם אתה משנה את הheader, אז לא תמיד הקומפיילר יודע לקמפל מחדש את הCPP (למרות שהוא אמור לדעת...). עושים CLEAN, מוחקים את כל התוצרים, ומקמפלים מחדש. לגבי הBGI, לא כדאי לך לעבוד עם הספריה הזאת תחת XP, תשים בצד חלונות תשנ"ח ותעבוד על זה. או שתעבוד עם OPENGL
 

smasher

New member
איפה עושים BUILD CLEAN ?

לא ממש מצאתי... ואני עובד עם BGI בגלל שזה פרויקט לבגרות לא בגלל שבא לי :)
 

smasher

New member
../images/Emo41.gif שאלה נוספת . . .

כמו שאמרתי, אני עובד עם ++Turbo C של Borland, ואני בונה עכשיו פרוייקט שהוא בעצם משחק תלת מימדי ( בעזרת ספריית BGI ). אומנם יש במשחק חישובים, שיכולים להאט אותו קצת, אבל הוא עובד לי בצורה ממש איטית.. ואני לא חושב שהוא כל כך כבד או לא יעיל עד כדי האטה כזאת בריצה של המשחק. יכול להיות שיש לזה סיבה אחרת ? אולי זה קשור לזה שאני עובד במצב Safe Mode עם Comand Propmt ? (ואני עובד במצב הזה בגלל שיש לי XP, והייתה לי בעיה עם ה-NTFS, שהבנתי שטורבו סי++ לא יכול לרוץ שם, ואז אמרו לי להמיר ל-FAT32, אבל אחרי שעבד פעם טוב במצב הזה, עשיתי פורמט ומאז גם במצב הזה זה לא עובד.. אז זה הפתרון הזמני שמצאתי (ה-Safe Mode) ומאז אני עובד ככה.. אז אולי יש לסייפ-מוד פחות משאבים והוא מאט בצורה משמעותית את המשחק ? )
 

DecayCell

New member
קצת farfetched, אבל אולי...

מאחר ומדובר בספריות ישנות, ידוע שלגירסאות חדשות יותר של ווינדוס יש בעיה לעבוד איתן... נסה להשתמש באמולטור של DOS טהור, אולי זה עשוי לעבוד. מצורף לינק ל-dosbox, אמולטור שיש לו נטייה לעבוד היטב.
 

smasher

New member
../images/Emo41.gif שאלה נוספת -

מה פירוש השגיאה:
Floating point error: Domain. Abnormal program termination​
זה אמור להיות משהו כמו הכנסת ערך double ל- int, לא ? אולי זה קשור לבעיה בזכרון ?
 

smasher

New member
טוב מצאתי משהו..

"Floating point error: Domain" - Most likely caused by compiling the Paradox Engine in the small memory model. The Paradox Engine must be compiled in the LARGE memory model. Stack overflow can also cause this problem.​
שיניתי את הזיכרון ללארג', אבל לא יודע למה במחשב יחסית ישן הוא פשוט נתקע ולא רץ. אני הולך לנסות בחדש..
 
למעלה