ABA


"קימפול C++ ב LINUX MANDRAKE 9.1"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #5898 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 5898
Vidi
חבר מתאריך 1.10.17
591 הודעות, דרג אמינות חבר זה
   20:48   09.05.03   
אל הפורום  
  קימפול C++ ב LINUX MANDRAKE 9.1  
 
הי התקנתי LINUX MANDRAKE 9.1
ואני משתמש ב C++ קומפילר GNU (כלומר אני מפעיל אותו ככה: g++ filename)
עכשיו אני מנסה ולקמפל והוא חוזר על השגיאה הבאה:
In file included from /usr/include/c++/3.2.2/backward/iostream.h:31,
from t.cc:1:
/usr/include/c++/3.2.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <sstream> instead of the deprecated header <strstream.h>. To disable this warning use -Wno-deprecated.
אפילו מתי שאני עושה לו תוכנית פשוטה כמו:
#include <iostream.h>
int main()
{
cout<<"hi";
return 0;
}
בבקשה תעזרו


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  קצת מוזר שהוא צועק, אבל זה מאוד פתיר. dryice 09.05.03 22:44 1
     תודה רבה :) אבל עכשיו אחרי שהצלחתי לקמפל... Vidi 09.05.03 23:45 2
         תפתח את הקובץ exe הראשי nesher  09.05.03 23:55 3
             תודה אבל אין כזה דבר EXE אני משתמש בלינוקס :) (ל''ת) Vidi 09.05.03 23:57 4
                 הסבר יותר טוב של הבעיה שלי במיוחד ל DRYCE Vidi 10.05.03 00:18 5
                 אתה וודאי שוכח נקודה סלאש. dryice 10.05.03 00:19 6
                     איך להריץ כבר ידעתי ופתרתי כמו שציינתי Vidi 10.05.03 00:23 7
                         אז ככה: dryice 10.05.03 00:32 8
                             שוב תודה :) Vidi 10.05.03 00:43 9

       
dryice

דרג אמינות חבר זה
   22:44   09.05.03   
אל הפורום  
  1. קצת מוזר שהוא צועק, אבל זה מאוד פתיר.  
בתגובה להודעה מספר 0
 
   הצורה שבה כתבת את הקוד, היא באמת צורה מיושנת
ונהוג לכתוב במקום:
#include <iostream.h>
לכתוב:
#include <iostream>
using namespace std;

שים לב שזה בדיוק מה שהוא אמר לך לעשות, להשתמש בX במקום X.h

השורה השניה היא בשביל להשתמש במרחב השמות של std בשביל
שלא יהיה צורך לשים קידומת std:: לפני כל שם של משתנה או פונקציה
שהוגדר בiostream או במקום אחר במרחב השמות std

אם אתה רוצה בכל זאת לכתוב בסגנון המיושן ולא לקבל את השגיאה
אז כפי שרשום בהודעת השגיאה, אתה יכול להוסיף דגל
-Wno-deprecated לשורת הקומפילציה.

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


DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות, דרג אמינות חבר זה
   23:45   09.05.03   
אל הפורום  
  2. תודה רבה :) אבל עכשיו אחרי שהצלחתי לקמפל...  
בתגובה להודעה מספר 1
 
עבר עריכה לאחרונה בתאריך 09.05.03 בשעה 23:53
 
הפעם הוא לא יוצר שום טעות הוא רק רץ... יוצר את a.out וזהו...
איך אני מפעיל את התוכנית המקומפלת?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nesher 

דרג אמינות חבר זה
   23:55   09.05.03   
אל הפורום  
  3. תפתח את הקובץ exe הראשי  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות, דרג אמינות חבר זה
   23:57   09.05.03   
אל הפורום  
  4. תודה אבל אין כזה דבר EXE אני משתמש בלינוקס :) (ל''ת)  
בתגובה להודעה מספר 3
 
עבר עריכה לאחרונה בתאריך 10.05.03 בשעה 00:01
 
אם אני מקפל עם הפלאד שמנתב את ה OUTPUT
אני מתכוון:
g++ t.cpp -o t
אז הוא יוצר לי קובץ בינארי שאני מניח שהוא הקובץ הרצה אבל שאני מנסה להריצו לא קורה כלום :|


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות, דרג אמינות חבר זה
   00:18   10.05.03   
אל הפורום  
  5. הסבר יותר טוב של הבעיה שלי במיוחד ל DRYCE  
בתגובה להודעה מספר 4
 
הי שוב
תקשיבו הצלחתי לקמפל את הקובץ ואפילו יצא לי קובץ בינארי אבל הוא לא עושה כלום!
אחרי שמחקתי את השורות:
#include <iostream>
using namespace std;
וכתבתי
#include <iostream.h>
במקומם זה עבד! אבל אני לא רוצה לעבוד כך כי DRYCE אמר שזו דרך מיושנת!
אז רציתי לדעת איך אני יכול לתקן את הבעיה שלי
בתודה מראש VIDI


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

דרג אמינות חבר זה
   00:19   10.05.03   
אל הפורום  
  6. אתה וודאי שוכח נקודה סלאש.  
בתגובה להודעה מספר 4
 
   כדי להריץ את הקובץ a.out מהספריה הנוכחית יש להקליד:

./a.out

ה /. בשביל לציין שמדובר בספריה הנוכחית.
כאשר מריצים תוכנית בלינוקס המערכת תחפש קובץ בשם במצוין
לפי המשתנה הסביבתי PATH (בדומה לDOS) אלה שבניגוד לדוס,
הספריה הנוכחית לאו דווקא מתווספת אוטומטית בהתחלה, ולמעשה
לאו דווקא קיימת, וזה למעשה דבר חיובי מסיבות בטיחות שאוכל
להסביר אחר-כך, אתה יכול להוסיף למשתנה PATH בסוף ".:" או
פשוט להתרגל לכתוב ./ כאשר צריך(הרבה יותר מומלץ)

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות, דרג אמינות חבר זה
   00:23   10.05.03   
אל הפורום  
  7. איך להריץ כבר ידעתי ופתרתי כמו שציינתי  
בתגובה להודעה מספר 6
 
בהודעתי הקודמת רק הופתעתי לראות שזה לא עובד כאשר השתמשתי ב Heading שנתת לי ולאחר ששיניתי את זה זה עבד. :\ ולכן שאלתי...
רק רציתי לדעת איך אני יכול לכתוב תוכנית כמו שאמרת ללא הטעות
ואם אני כבר שואל אז מה הסיומת התקנית של קובץ שמקומפל ללינוקס (קובץ בינארי)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dryice

דרג אמינות חבר זה
   00:32   10.05.03   
אל הפורום  
  8. אז ככה:  
בתגובה להודעה מספר 7
 
   הצורה עם ה.h גם היא מקובלת ולמעשה מאוד נפוצה,
הצורה עם הnamespace היא יותר מודרנית ויש שיאמרו יותר מתאימה
לתכנות OOP. נראה לי מאוד תמוהה שזה עובד בצורה אחת אבל לא
בצורה אחרת זה אמור להיות שקול.

בשביל שאני אבין נכון, אתה מקמפל את התוכנית, אתה מריץ אותה
ופשוט לא מקבל שום פלט על המסך והתוכנית מסתיימת בהצלחה?
ואילו כשאתה כותב iostream.h הכל עובד כראוי?
וכל מה שהתוכנית עושה זה cout פשוט. נראה לי ממש מוזר.
(תנסה אוליי לכתוב cerr במקום cout, אולי זה עניין של buffering)


לגבי השאלה השניה, לרוב לקבצים בינארים תחת לינוקס אין סיומת
בכלל, אבל למעשה רוב מוחץ של התוכניות תחת לינוקס בכלל מתעלמות
מהסיומת ומסתכלות על תוכן הקובץ בלבד.
gcc/g++ קצת שונים, ובמקרים מסוימים הם כן מחליטים מה השפה
של התוכנית על פי הסיומת של הקובץ, .c עבור C
cc, CC, C, cpp, CPP עבור C++ וכן עוד סיומת עבור שפות אחרות.

נסה גם אוליי לקמפל בעזרת gcc במקום g++ אפילו שמדובר בקוד C++

DRYICE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Vidi
חבר מתאריך 1.10.17
591 הודעות, דרג אמינות חבר זה
   00:43   10.05.03   
אל הפורום  
  9. שוב תודה :)  
בתגובה להודעה מספר 8
 
עכשיו הכל מובן!
\\* לפחות עד שאני אחזור בפעם הבאה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net