שאלות קצרות ב C ותקשורת - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלות קצרות ב C ותקשורת


Eviljelly

Recommended Posts

שאלה ראשונה , define# רץ לפני הקומפיילר ולכן טוב רק בקובץ שבו הוא נכתב נכון ?

לדוגמא אם אני מגדיר בקובץ א define ובקובץ ב עושה include לקובץ א זה לא ישפיע על התוכן של קובץ ב (כמובן שקובץ א הוא header)

יש לי פשוט כמה define זהים בקבצים שונים ואני רוצה לאחד אותם (מסיבות מובנות) ורוצה לבדוק אם זה אפשרי ..

שאלה שניה (לא בטוח שאני שולט בכל המושגים).

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


struct sockaddr_un ServerUNIXstream;
ServerUNIXstream.sun_family=AF_UNIX;
ServerUNIXstream.sun_path="/user/workplace/socket1";
SocketID[2]=socket(AF_UNIX, SOCK_STREAM,0);

וכל הזמן מקבל שגיאות קומפילציה על הניסיון להגדיר את ה path .

ניסיתי ליצור משתנים מכל הסוגים (char[] , *char אותו דבר בעצם) ולעשות השמה בינהם אבל לא עבד בחיפושים בגוגל דווקא זה נראה כאילו זה אמור להתקפל ..

מנסה להריץ על Xubuntu וסביבת העבודה eclipse .

תודה

קישור לתוכן
שתף באתרים אחרים

define ו-include הם שניהם פקודות שרצות ב-preprocessor, לפני הקומפיילר, ו-define משפיע מהרגע שהוא מוגדר ועד סוף הקובץ כולל אינקלוד (אלא אם תעשה לו undef איפשהו). כלומר, אם יש define כלשהו ב-a.h וב-b.h עושים include a.h, אז ה-define יהיה מוגדר גם ב-b.h.

הדרך לאחד היא לעשות:

#ifdef MY_DEFINE
#undef MY_DEFINE
#endif
#define MY_DEFINE whatever

כלומר, אם MY_DEFINE כבר מוגדר אז בטל אותו ותגדיר מחדש.

לגבי הבעיה שלך - הטיפוס של "/user/blabla" הוא *const char, והטיפוס של sun_path הוא []char. אי אפשר לעשות השמה ל-[]char, אלא רק לאיברים שלו (תנסה להגדיר [char a[10 ואז לעשות "a = "test ותראה מה יקרה). אתה צריך להשתמש ב-strcpy.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...