פורסם 2004 בספטמבר 821 שנים שלום, התחלתי השנה ללמוד מדעי מחשב וחיפשתי קומפיילר טוב יותר מה-turbo-c משנת 70 שאנחנו מתכנתים איתו בבי"ס. לפי מה שהבנתי אפשר גם לקמפל עם תוכנות ל-CPP וראיתי שהרבה אנשים ממליצים על dev-c++. אז הורדתי וניסיתי לעשות תוכנת Hello.c פשוט:#include <stdio.h>#include <conio.h>void main(){ clrscr(); printf("Hello, my name is Dan/n");}עשיתי compile וקיבלתי את השגיאה הזאת:In function 'main': [warning] return type of 'main' is not 'int'.[linked error] undefined reference 'clscr'בבקשה תגידו לי מה הבעיה
פורסם 2004 בספטמבר 821 שנים main הוא int, ולא void. לכן צריך לכתוב main int, ולהחזיר ערך (0 בהצלחה) בסוף התכנית (return 0).השני זה די ברור. לא קיימת פונקציה העונה על השם clrscr בספריה הסטנדרטית של C, אז שלא יעבדו עליך!
פורסם 2004 בספטמבר 1021 שנים main הוא int, ולא void. לכן צריך לכתוב main int, ולהחזיר ערך (0 בהצלחה) בסוף התכנית (return 0).השני זה די ברור. לא קיימת פונקציה העונה על השם clrscr בספריה הסטנדרטית של C, אז שלא יעבדו עליך!דווקא הוא עשה את זה נכון. תתפלא אבל יש ספרים שהקוד שכתוב שם הוא עם פונקצית main שלא מחזירה ערך. כמו כן, הפונקציה clrscr אכן קיימת, אך היא לא נמצאת בdev-Cpp אלא ב-TClite. זאת אומרת, לכל מהדר יש פונקציות יחודיות לו. למשל בdev-Cpp יש פונקציות שונות להשתמש בגרפיקה של OpenGL מאלו של visual C++.
פורסם 2004 בספטמבר 1021 שנים ANSI-C שהיא הגירסה הרשמית של C מחייבת את main להיות מסוג intזה שכל מיני ספרים כותבים כל מיני שטויות לא משנה את התקן.הסיבה ש-void יפעל בחלק מהמקרים היא שאתה פשוט עובד על קומפיילר של C++ שתומך ב-main מסוג void.קומפיילר אמיתי של C לא יאפשר main מסוג void.דרך אגב עוד כמה דברים שאי אפשר/אסור לעשות ב-ANSI-C ומותר לעשות ב-C++1. משתנים אפשר להגדיר רק בראש בלוק, כלומר אתה לא יכול לעשותint main() { int i; scanf("%d",&i); int j; ....}2. אתה לא יכול להגדיר משתנה בתוך פקודת ה-for. הפקודה הבאה פשוט לא חוקית.for(int i=0;i<N;i++)3. malloc לא מחזיר void* שיש להמיר עם cast לטיפוס המתאים, ב-ANSI-C לא קיים void* ולא צריך להמיר את הערך ש-malloc מחזיר.
פורסם 2004 בספטמבר 1421 שנים נכון.ב3 התכוונת להגיד ש void* כן קיים בANSI, ולא ההפך...דרך אגב, את שלושת הדברים שהבאת מאשר תקן C99... אבל אני אישית מעדיף להצמד לANSI בכל מקרה.C99http://www.kuro5hin.org/?op=displaystory;sid=2001/2/23/194544/139
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.