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

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

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

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

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

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

פקודת include

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

שימוש ב-גרשיים מורה לקדם מעבד לחפש את הקובץ בפרויקט הנוכחי שאנו עובדים עליו, לדוגמה:#include "my_file.h"לעומת זאת, במידה ונשתמש בסוגריים משולשים (<>) אזי נתכוון לקובץ שאינו נמצא בפרויקט שלנו, לדוגמה:#include <stdio.h>קבצים אלו מכונים בדרך כלל header file וסיומתם h. מקובל שקבצים אלו יכילו רק הצהרות ומאקרו ולא פונקציות, על מנת למנוע מצב של פונקציות זהות בכמה מקומות בקוד. שלא כמו בפקודת define, אין מניעה שבקבצים אלו יהיו פקודות של קדם המעבד.

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

קישורים חיצוניים

 C preprocessor באתר אוניברסיטת בר-אילן
 The C Preprocessor באתר מיזם GNU