שפת C/נספחים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות)
דגלי הידור
שורה 116:
כמובן שמהדרים ישנים-מאד אלה גם אינם מכירים ב[[שפת C/נספחים#מילים שמורות חדשות|מילים השמורות החדשות]] שראינו.
 
==דגלי הידור==
אם תעבדו עם מהדר ה-gcc משורת הפקודה, ישנם כמה דגלים שכדאי להכיר. נציג כאן רק את החשובים שבהם. בדוגמאות שנראה file1.c ו-file2.c הם קבצי תוכניות שכתבנו.
* הדגל {{קוד בשורה|-Wall}} מסמן למהדר לציין כל Warning אפשרי. Warning - אזהרה - הוא מונח בתכנות שמתייחס לבעיות בקוד שאינן מונעות לגמרי הידור, אבל ברוב המקרים מצביעות על בעייה מסויימת. דוגמה: הסבה ישירה של משתנים שהיא חוקית אך מסבה סוגים לא קשורים של משתנים. דוגמת שימוש:
{{קוד|gcc -Wall file1.c}}
* הדגל {{קוד בשורה|-o <file>}} דגל שמודיע למהדר מה שם קובץ הפלט שיווצר לאחר ההידור. ברירת המחדל בלינוקס היא a.out כאשר מדובר בקובץ ריצה, וקובץ עם שם זהה אם מדובר בהידור בלבד ללא קישור (ראו בהמשך). דוגמת שימוש:
{{קוד|gcc file1.c file2.c -o Program}}
* הדגל {{קוד בשורה|-c}} מסמן למהדר שלא ליצור קישור אלא להדר בלבד. שימושי כאשר בונים פרוייקטים המורכבים מיותר מקובץ אחד, כאשר לא מעוניינים להדר ולקשר מחדש את כל הקבצים, אלא רק חלק מהם. כברירת מחדל, הפעולה יוצרת קובץ בשפת מכונה, תחת שם זהה אך עם הקידומת .o, שאינו בר הרצה (ניתן לבחור כל שם קובץ אחר בעזרת הדגל -o). דוגמת שימוש:
{{קוד|gcc -c file1.c file2.c}}
לאחר מכן, ניתן לקשר את הקבצים שנוצרו בצורה הבאה, כאשר הפעולה הבאה תיצור קובץ הרצה בשם Program:
{{קוד|gcc file1.o file2.o -o Program}}
* הדגל {{קוד בשורה|-g}} מסמן למהדר להוסיף סימונים מיוחדים שמסייעים לתוכנות הדיבאג. אם אתם בודקים את הקוד בעזרת דיבאגר כלשהו (gdb, למשל), יש להדר בעזרת הדגל הזה. אם תבדקו קובץ בעזרת Valgrind תוכלו לקבל מידע רב יותר על התקלות שיימצאו. דוגמת שימוש:
{{קוד|gcc -g file1.c file2.c -o Program}}
* הדגל {{קוד בשורה|-E}} מציג כיצד נראה הקובץ אחרי פעולת הקדם-מהדר. כאשר מפעילים את ה-gcc עם דגל זה לא מתבצע הידור כלשהו בפועל. דוגמת שימוש:
{{קוד|gcc -E file1.c}}
* הדגל {{קוד בשורה|-O}} (שימו לב - O גדולה) יורה למהדר לבצע אופטימיזציה של התוכנית, כלומר - יבצע שינויים בקוד התוכנית כדי להביא לפעולה מהירה יותר. בדרך כלל ניתן להשיג שיפור מרשים בביצועים כאשר משתמשים באופטימיזציה. מצד שני, זוהי פעולה שעשויה לגרום לבעיות. יש כמה דרגות אפשריות של אופטימיזציה (מ-0 ועד 3), כאשר ככל שהדרגה גבוהה יותר מתבצעים שינויים רבים יותר והסכנה בפגמים שיווצרו - גדולה יותר. ככל שעולה דרגת האופטימיזציה גם ידרש המהדר לזמן פעולה ארוך יותר. הדגל -O (ללא מספר) מקביל לדרגה 1. עבור דרגות אחרות יש לכתוב בצמוד לאות O את דרגת האופטימיזיה: O1, O2 או O3 (ברירת המחדל, אם לא כותבים דגל כלל, היא O0). דוגמת שימוש:
{{קוד|gcc -Wall -O file1.c -o MyProgram}}
אופטימיזציה בדרגה 3:
{{קוד|gcc -Wall -O3 file1.c -o MyFastProgram}}
 
==קדימות ואסוציאטיביות אופרטורים==