עבור לתוכן

STRUCT, עוד פעם..

Featured Replies

פורסם

אחרי שאת העבודה האחרונה שלי בSTRUCTים עשיתי בקובץ אחד.

יש לי עוד עבודה איתם עם הרבה קבצים והפעם המורה(אחד אחר) אמר לעבוד בVC ולא בTC...

לבעיה

לא יודע מה הארורים בדיוק אומרים לי, אבל אולי אתם תגלו.

אלה הקבצים הרלוונטים

main

#include "mainsudoko.h"

int main()
{
vec v;
int i;

for(i=0;i<9;++i)
setCell(v,i,5);
printf("%d",getCell(v,1));
getchar();
return 0;
}

vec.c

#include "vec.h"

int getCell(vec v, int index)
{
return(v.vector[index]);
}

int setCell(vec v, int index, int num)
{
v.vector[index]=num;
return(1);
}

vec.h

struct vecc
{
int vector[9];
};

typedef struct vecc vec;

int getCell(vec v, int index);
int setCell(vec v, int index, int num);

לא חסר לי INCLUDE לשום דבר..

הERRORS

1>MSVCRTD.lib(crtexew.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup
1>Debug\sudoko.exe : fatal error LNK1120: 1 unresolved externals

פורסם

כשאתה מקמפל תוכנית windows, אז הפונקציה הראשית שלך היא לא void main, אלא משהו טיפה יותר מורכב.

הדרך הכי קלה ליצור אותה זה ליצור project כ- win32 command line, ולתת ל- Project Wizard ליצור לך תוכנית פשוטה.

פורסם
  • מחבר

כשעישיתי תפרוייקט אני בחרתי ב FROM EXIST FILES

והוא לא נתן לי שום MAIN אחר..

פורסם

אני לא יודע באיזו גרסא של VC אתה משתמש.

ב- 2005, הפונקציית main נראית ככה:

int _tmain(int argc, _TCHAR* argv[])

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

פורסם

איך יצרת את הפרוייקט?

בכל מקרה, תבחר ב Win32 Console Application ושם ב Empty Project. זה יצור לך פרוייקט ריק שאליו תוכל להוסיף את הקבצים שלך.

Boomerang הוא לא חייב להשתמש ב _tmain . ה _tmain בסה"כ מוחלף ל main אם הפרוייקט הוא ANSI או ל wmain אם הוא unicode:

http://msdn2.microsoft.com/en-us/library/6wd819wh(VS.80).aspx

פורסם
  • מחבר

אני משתמש ב2005. ואני לא יצרתי פרוייקט חדש כי הוא מקבל רק קבצי C++ ואני משתמש בC(ולא אני לא יכול לעבור).

והוא נותן לי מלא ארורים על השורה הזו שהבאתם.

פורסם

כפי שאמרו לך, תיצור פרוייקט חד ש עם הWIZARD, ותבחר שם EMPTY PROJECT.

כשאתה מוסיף קבצים חדשים לתוכנית שלך, תדאג לתת להם סיומת .c. כלומר, במקום שאתה צריך להכניס את השם שלהם, תרשום myCFile.c.

פורסם
  • מחבר

זה מפעיל לי את התוכנית, אבל הוא אומר לי שאני לא יכול להשתמש בV לפני שאני מאתחל אותו.

ניסיתי לרשום בSTRUCT

int vector[9]={0,0,0,0,0,0,0,0,0};

והוא מתחיל להשתגע.. ניסיתי גם לעשות לו פונקציה שמאפסת את V ועדין אחרי שאני קוראה לה יש את אותו הודעה.

פורסם

אתה לא יכול לאתחל את המערך בתוך הגדרת הSTRUCT. מה שאתה כן יכול לעשות זה בהצהרה על המשתנה שלך(מסוג VEC):


vec v = {0};

ותרשום את ההודעה המדוייקת שקיבלת.

פורסם
  • מחבר

זה סידר את זה, אבל איך בדיוק?

הרי V לא מערך שאפשר לעשות לו {0}.

פורסם

אפשר לעשות את זה גם למבנים, לא רק למערכים.


struct bla
{
int a;
char b;
}
....

struct bla c = {5, 'g'};

פורסם
  • מחבר

סבבה.

עכשיו הגענו לקוד, הוא מדפיס לי 0 במקום 5, אותה תוכנית.

ניסיתי גם לעשות לולאה של הדפסות והוא מדפיס לי 0 אחד

פורסם

זה מה שקורה כאשר מכניסים מערך לתוך STRUCT - הוא מעתיק את כל המערך, ולא שולח את הכתובת שלו.

תשלח לפונקציות את הכתובת של הSTRUCT והכל יסתדר.

פורסם
  • מחבר

כנראה שכחתי לציין שניסיתי עם פוינטר וזה לא עבד

כלומר

אני שולח &v ומקבל בפונקציה *v

ולא, לא עובד..

עריכה:

כדי לחדד את העיניין

	for(i=0;i<9;++i)
setCell(&v,i,5);

int setCell(vec *v, int index, int num)
{
(*v).vector[index]=num;
return(1);
}

פורסם

תשלח את כל התוכנית שלך(עם הפויינטרים).

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים