בעיה ב- Dev-CPP - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

בעיה ב- Dev-CPP


perrikus

Recommended Posts

שלום, התחלתי השנה ללמוד מדעי מחשב וחיפשתי קומפיילר טוב יותר מה-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'

בבקשה תגידו לי מה הבעיה

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

main הוא int, ולא void. לכן צריך לכתוב main int, ולהחזיר ערך (0 בהצלחה) בסוף התכנית (return 0).

השני זה די ברור. לא קיימת פונקציה העונה על השם clrscr בספריה הסטנדרטית של C, אז שלא יעבדו עליך!

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

main הוא int, ולא void. לכן צריך לכתוב main int, ולהחזיר ערך (0 בהצלחה) בסוף התכנית (return 0).

השני זה די ברור. לא קיימת פונקציה העונה על השם clrscr בספריה הסטנדרטית של C, אז שלא יעבדו עליך!

דווקא הוא עשה את זה נכון. תתפלא אבל יש ספרים שהקוד שכתוב שם הוא עם פונקצית main שלא מחזירה ערך. כמו כן, הפונקציה clrscr אכן קיימת, אך היא לא נמצאת בdev-Cpp אלא ב-TClite. זאת אומרת, לכל מהדר יש פונקציות יחודיות לו. למשל בdev-Cpp יש פונקציות שונות להשתמש בגרפיקה של OpenGL מאלו של visual C++.

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

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 מחזיר.

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

ארכיון

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

×
  • צור חדש...