עזרה בC וסוקטים

kaliber2004

New member
עזרה בC וסוקטים

אני מנסה לבנות סוקט ב שפת C אבל משום מה המהדר פולט לי שגיע כאשר אני מנסה לקמפל! תעזרו לי בבקשה להבין מה הבעיה! המהדר פולט לי את השגיע הנ"ל
error C2275: 'SOCKET' : illegal use of this type as an expression c:\program files\microsoft visual studio\vc98\include\winsock.h(35)​
והוא מתייחס לשורה הנ"ל
SOCKET Socket;​
הנה הקוד! וכמובן שב #include "stdio.h" ה STDIO הוא ב <> ולא ב ""
#include "stdio.h" #include "winsock.h" void main() { WSADATA WsaDat; if (WSAStartup(MAKEWORD(1, 1), &WsaDat) != 0) { printf("WSA Initialization failed."); } SOCKET Socket; Socket = socket(AF_INET, SOCK_STREAM, 0); if (Socket == INVALID_SOCKET) { printf("Socket creation failed."); } }​
 

vinney

Well-known member
אסור לעשות את זה

אתה מגדיר משתנה באמצע קוד, זאת שגיאה בC.
 

annefan

New member
זו כבר לא שגיאה

רשמית, החל מ-C99. מעשית, gcc תמך בזה כבר מגירסה 3.0 אאל"ט. VC6 הקפיד על זה? חוץ מזה, אם לדייק, מה ש(היה) אסור זה לשים הצהרה על משתנה אחרי קוד באותו scope. אם היית מגדיר scope חדש, אף פעם לא היתה בעיה.
 

vinney

Well-known member
נכון

אצלו זה באמצע הSCOPE. ולדעתי VC6 נותן על זה שגיאה, הוא נכתב לפני C99.
 

vinney

Well-known member
אצלי נותן שגיאה

כנראה צריך להתקין SP בשביל זה ? לדעתי אין לי, התקנתי מדיסקים. אני אעשה נסיון במחשב בעבודה (SP6) אם אזכור מחר
 

kaliber2004

New member
?

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

vinney

Well-known member
איזה מדריך זה../images/Emo35.gif../images/Emo35.gif../images/Emo35.gif

יכול להיות שזה מדריך שמניח שסיומת הקובץ היא CPP?[ זאת, אגב, אחת הדרכים לפתור את הבעיה. הדרך השניה היא להעביר את ההגדרה (השורה בה אתה מקבל את השגיאה) לתחילת הSCOPE (יעני לתחילת הפונקציה במקרה שלך). ותגיד לי, אם אתה רק מתחיל, איך לעזעזל הגעת לSOCKETים
 

kaliber2004

New member
כן זה C++

אממ כן זה C++ ולסוקטים הגעתי כי רציתי ללמוד איך הם עובדים.
 

kaliber2004

New member
כ CPP זה עובד

אוקי זה עובד כ CPP אבל מעניין אותי איך לגרום לזה לעבוד בתור C?
 

vinney

Well-known member
זה לא C ../images/Emo13.gif

זה כמו שתגיד "איך לגרום לבייסיק לעבוד באסמבלר"
++C היא המשך של C, לכן מה שמותר ב++C יכול להיות אסור בC, כמו בדוגמא הזאת. יש גם דברים שלהפך, היו מותרים בC, אבל ב++C כבר אסורים.
 

HaRmosh

New member
סתם מתוך סקרנות,

אתה יכול לפרט מה היה ב-C שאין ב-CPP ?
 
למעלה