הקדם-מעבד של שפת C

מתוך ויקיפדיה, האנציקלופדיה החופשית

הקדם מעבד של שפת Cאנגלית: C preprocessor) הוא תוכנה טקסטואלית שרצה לפני הקומפילציה על הקוד ומשנה אותו לצורכי הקומפילציה, תוצר התוכנה לא נשמר והקוד בקבצים נשאר כשהיה לפני כן.

פקודות לקדם מעבד מתחילות בתחילת שורה עם התו '#'.

פקודת define[עריכת קוד מקור | עריכה]

הפקודה define מגדירה סימבולים, המילה הראשונה לאחריה היא הסימבול וכל מה שמופיע לאחריו בשורה הוא הפירוש שלו, כאשר פירוש ריק הוא חוקי. בכל מקום בו הסימבול מופיע לאחר המקום בו הוא הוגדר, הוא יוחלף בפירוש שלו.

הגדרת סימבול כפונקציה[עריכת קוד מקור | עריכה]

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

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

פקודת include[עריכת קוד מקור | עריכה]

פקודת include ולאחריה שם קובץ, מוקף בגרשיים או בסוגריים משולשים, מכניסה את תוכן הקובץ לשורה של פקודת ה-include.

שימוש בגרשיים מורה לקדם מעבד לחפש את הקובץ בפרויקט הנוכחי שאנו עובדים עליו, לדוגמה:

#include "my_file.h"

לעומת זאת, במידה ונשתמש בסוגריים משולשים (<>) אזי נתכוון לקובץ שאינו נמצא בפרויקט שלנו, לדוגמה:

#include <stdio.h>

קבצים אלו מכונים בדרך כלל header file וסיומתם h. מקובל שקבצים אלו יכילו רק הצהרות ומאקרו ולא פונקציות, על מנת למנוע מצב של פונקציות זהות בכמה מקומות בקוד. שלא כמו בפקודת define, אין מניעה שבקבצים אלו יהיו פקודות של קדם המעבד.

פקודות תנאי[עריכת קוד מקור | עריכה]

באמצעות הקדם-מעבד, ניתן להגדיר האם קטע קוד כלשהו יתקמפל או לא, כתלות בהאם סימבול הוא קיים על ידי הפקודה ifdef או על ידי תנאי בוליאני על ידי הפקודה if. הפקודה מתבצעת על כל הקוד עד הפקודה end. כמו כן ניתן להשתמש בפקודה else כדי לשים קוד אחר במקרה המשלים.

קישורים חיצוניים[עריכת קוד מקור | עריכה]