שאלה למשתמשי DEV Cּּ

yariv~2

New member
שאלה למשתמשי DEV Cּּ

איך מקמפלים שני קבצי מקור לקובץ בר הרצה אחד? תודה!
 

תמר,

New member
אם אני מבינה אותך נכון

אתה מתכוון ל-DevCpp. ולמיטב ידיעתי עושים זאת כמו שעושים ברוב התוכנות: מגדירים פרוייקט עם כמה קבצים ומקמפלים. התוצאה היא קובץ בר הרצה עם שם הפרוייקט. שני הקבצים האלו אמורים להיות "שייכים" אחד לשני, לדוגמה: קובץ א´ הוא התוכנית הראשית, ובו יש קריאות לפונקציה מקובץ ב´.
 

yariv~2

New member
היי תמר כתבתי תוכנית קטנטנה

שתבהיר יותר מה אני רוצה כי לא הבנתי את המשפט "מגדירים פרויקט עם כמה קבצים ומקמפלים"? פונקציה 1 =======================
#include <iostream.h> void getfloat (void); float f; main() { getfloat(); cout << "Value of float = " << f; }​
פונקציה 2 =======================
#include <stream.hpp> getfloat(void) { extern float f; cout << "Enter floating point value: "; cin >> f; }​
 

תמר,

New member
שילוב קבצים / ספריות

התשובה מתחלקת לשני חלקים: החלק העקרוני והחלק המעשי. באופן עקרוני: ניתן לשלב כמה וכמה קבצים בשפת c או c++. עושים זאת כך: א. קובץ "עיקרי" ובו הפונקציה הראשית הנקראת main. הפונקציה קוראת לפונקציות אחרות שנמצאות בקובץ הזה או בקבצים אחרים. ב. לכל קובץ ובו הגדרת פונקציות, צריך להכתב קובץ ובו הצהרה על הפונקציות. קובץ זה הוא בעל סיות h. בדרך כלל. ג. כאשר משתמשים בפונקציה מקובץ חיצוני, מכלילים את קובץ ההצהרה (או קובץ הכותרת) ד. גם בקובץ הספריה מכלילים את קובץ ההצהרה. ולדוגמה מעשית:
Main.cpp: ----- ----- #include <iostream.h> #include "floatlib.h" main() { f = getfloat(); cout << "Value of float = " << f; } ----------------------------- floatlib.h : ----- ----- #ifndef GETFLOAT_LIB #define GETFLOAT_LIB float getfloat(); #endif ----------------------------- floatlib.cpp : ----- ----- #include floatlib.h #include <stream.hpp> float getfloat() { { float x; cout << "Enter floating point value: "; cin >> x; return x; }​
ועכשיו - לחלק המעשי: כאשר בונים פרוייקט ב-devcpp, מתחילים עם פתיחת פרוייקט חדש, בוחרים את סוג הפרוייקט ונותנים לפרוייקט שם. לפרוייקט מוסיפים את שלושת הקבצים הנ"ל, ומבצעים את הפעולה build all (בתפריט compile) שם קובץ ההרצה הנוצר הוא שם הפרוייקט בסיומת exe. אני מקווה שההסבר מספיק מובן. אם שמת לב, לא השתמשתי במשתנים גלובליים. לא מומלץ להשתמש בהם אלא אם כן אין לך שום אפשרות אחרת (אפשרויות אחרות הן: העברת פרמטרים by refernce - זאת אומרת שמה שאתה מעביר זה בעצם את הכתובת שלהם, ואם משנים אותם בפונקציה, הם משתנים גם בתוכנית המקורית שהעבירה אותם. אפשר גם להשתמש בפונקציה שמחזירה ערך, כמו שהראתי בדוגמה למעלה. יש עוד סוג של משתנה מסוג static שהוא משתנה המוכר רק בפונקציה בו הוא מוגדר, אך הוא שומר על ערכו בין הכניסות לפונקציה.)
 

yariv~2

New member
אממ.. התשובה מאד עזרה לי-->

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

תמר,

New member
הסבר קטן

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