אנגליתצרפתיתגרמניתאיטלקיפורטוגזירוסיספרדי

סמל OnWorks

aarch64-linux-gnu-cpp-4.8 - מקוון בענן

הפעל את aarch64-linux-gnu-cpp-4.8 בספק אירוח חינמי של OnWorks על אובונטו מקוון, פדורה מקוון, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

זוהי הפקודה aarch64-linux-gnu-cpp-4.8 שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו בחינם כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


cpp - ה-C Preprocessor

תַקצִיר


cpp [-Dמאקרו[=defn]...] [-Uמאקרו]
[-Idir...] [-אני מצטטdir...]
[-Wלהזהיר...]
[-M|-ממ] [-MG] [-MF שם הקובץ]
[-MP] [-MQ יעד...]
[-MT יעד...]
[-P] [-fno-working-directory]
[-x שפה] [-std=תֶקֶן]
בקובץ אוסף

רק האפשרויות השימושיות ביותר מפורטות כאן; ראה להלן לגבי השאר.

תיאור


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

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

עם זאת, לעתים קרובות אתה יכול לברוח משימוש ב-cpp על דברים שאינם C. Other
שפות תכנות אלגוליות הן לרוב בטוחות (פסקל, עדה וכו'). כך גם ההרכבה, עם
זְהִירוּת. -מסורתי-cpp מצב שומר על שטח לבן רב יותר, וחוץ מזה הוא יותר
מַתִיר. ניתן למנוע רבות מהבעיות על ידי כתיבת הערות בסגנון C או C++
במקום הערות בשפת האם, ושמירה על פקודות מאקרו פשוטות.

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

מעבדי קדם C משתנים בחלק מהפרטים. מדריך זה דן במעבד המקדים של GNU C, אשר
מספק קבוצה קטנה של התכונות של ISO Standard C. במצב ברירת המחדל שלו, GNU
C preprocessor לא עושה כמה דברים הנדרשים לפי התקן. אלו תכונות
בהם נעשה שימוש לעתים רחוקות, אם בכלל, ועלולות לגרום לשינויים מפתיעים במשמעות של א
תוכנית שאינה מצפה להם. כדי לקבל תקן ISO קפדני C, עליך להשתמש ב-
-std=c90, -std=c99 or -std=c11 אפשרויות, תלוי באיזו גרסה של התקן אתה
רוצה. כדי לקבל את כל האבחונים החובה, עליך להשתמש גם -קַפְּדָנִי.

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

לשם הבהירות, אלא אם צוין אחרת, הפניות ל CPP במדריך זה עיין ב-GNU CPP.

אפשרויות


מעבד הקדם C מצפה לשני שמות קבצים כארגומנטים, בקובץ ו אוסף. ה
preprocessor קורא בקובץ יחד עם כל קובץ אחר שהוא מציין איתם #include. כל
הפלט שנוצר על ידי קבצי הקלט המשולבים נכתב אוסף.

או בקובץ or אוסף יכול להיות -, שכמו בקובץ פירושו לקרוא מקלט סטנדרטי ו
as אוסף פירושו לכתוב לפלט סטנדרטי. כמו כן, אם אחד מהקבצים מושמט, זה אומר
אותו דבר כאילו - צוין עבור קובץ זה.

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

לאפשרויות רבות יש שמות מרובי אותיות; לכן אפשרויות מרובות של אותיות בודדות עשויות לֹא be
מקובצים: -dM שונה מאוד מ -d -M.

-D שם
הגדירו מראש שם כמאקרו, עם הגדרה 1.

-D שם=הגדרה
התוכן של הגדרה מסומנים ומעובדים כאילו הופיעו במהלך
תרגום שלב שלישי בא #define הוֹרָאָה. בפרט, ההגדרה תהיה
קטוע על ידי תווים משובצים בשורה חדשה.

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

אם ברצונך להגדיר מאקרו דמוי פונקציה בשורת הפקודה, כתוב את הארגומנט שלו
רשימה עם סוגריים מסביב לפני סימן השוויון (אם יש). סוגריים הם
משמעותי לרוב הפגזים, אז תצטרך לצטט את האפשרות. עם sh ו CSH,
-ד'שם(ארגונים...)=הגדרה' יצירות.

-D ו -U האפשרויות מעובדות לפי הסדר שהן ניתנות בשורת הפקודה. את כל
-אימאקרו פילה ו -לִכלוֹל פילה האפשרויות מעובדות אחרי הכל -D ו -U אפשרויות.

-U שם
בטל כל הגדרה קודמת של שם, מובנה או מסופק עם א -D אוֹפְּצִיָה.

-undef
אל תגדיר מראש פקודות מאקרו ספציפיות למערכת או GCC ספציפיות. התקן שהוגדר מראש
פקודות מאקרו נשארות מוגדרות.

-I dir
הוסף את הספרייה dir לרשימת הספריות שיש לחפש אחר קובצי כותרות.

מדריכים בשם על ידי -I מחפשים לפני שהמערכת הרגילה כוללת ספריות.
אם הספרייה dir היא מערכת סטנדרטית כולל ספרייה, התעלמות מהאפשרות
ודא שסדר החיפוש המוגדר כברירת מחדל עבור ספריות מערכת והטיפול המיוחד
של כותרות המערכת אינן מובסות. אם dir מתחיל ב-"=", ואז ה-"=" יהיה
מוחלף בקידומת ה-sysroot; לִרְאוֹת --sysroot ו -isysroot.

-o פילה
כתוב פלט ל פילה. זה אותו דבר כמו לציין פילה בתור אי האופציה השנייה
ויכוח ל cpp. gcc יש פרשנות שונה לטיעון שני של אי-אופציה,
אז אתה חייב להשתמש -o כדי לציין את קובץ הפלט.

- קיר
מפעיל את כל האזהרות האופציונליות הרצויות עבור קוד רגיל. כרגע זה
is -הערה, -תרשימים, -ומולטיקאר ואזהרה על קידום מספר שלם הגורם ל-a
שינוי סימן בביטויי "#if". שימו לב שרבות מהאזהרות של המעבד
פועלים כברירת מחדל ואין להם אפשרויות לשלוט בהם.

-הערה
-הערות
אזהרה בכל פעם שרצף התחלה של הערות /* מופיע ב /* הערה, או בכל פעם א
backslash-newline מופיע ב-a // תגובה. (לשתי הצורות יש את אותה השפעה.)

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

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

-מסורתי
הזהיר לגבי מבנים מסוימים שמתנהגים אחרת במסורתי וב-ISO C. כמו כן
להזהיר מפני מבני ISO C שאין להם מקבילה C מסורתית, ובעייתיים
מבנים שיש להימנע מהם.

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

-Wunused-macros
התריע על פקודות מאקרו המוגדרות בקובץ הראשי שאינן בשימוש. מאקרו הוא מְשׁוּמָשׁ אם זה
הורחב או נבדק על קיומו לפחות פעם אחת. המעבד המקדים יתריע גם אם
המאקרו לא היה בשימוש בזמן שהוא הוגדר מחדש או לא מוגדר.

פקודות מאקרו מובנות, פקודות מאקרו המוגדרות בשורת הפקודה ופקודות מאקרו המוגדרות ב- include
לא מוזהרים לגבי קבצים.

הערה: אם נעשה שימוש בפועל במאקרו, אבל נעשה בו שימוש רק בלוקים מותנים שדילגתם עליו, אז
CPP ידווח על זה כלא בשימוש. כדי להימנע מהאזהרה במקרה כזה, ייתכן שתשתפר
את היקף ההגדרה של המאקרו על ידי, למשל, העברתו לתוך הראשון שדילג עליו
לַחסוֹם. לחלופין, אתה יכול לספק שימוש דמה עם משהו כמו:

#אם הוגדרה_מאקרו_גורם_האזהרה
#endif

-תוויות-Wendif
התריע בכל פעם ש #else או #endif ואחריהם טקסט. זה קורה בדרך כלל ב
קוד הטופס

#אם FOO
...
#אחרת FOO
...
#endif FOO

ה-"FOO" השני והשלישי צריכות להיות בתגובות, אך לרוב אינן בתוכניות ישנות יותר.
אזהרה זו מופעלת כברירת מחדל.

-שגיאה
הפוך את כל האזהרות לשגיאות קשות. קוד המקור שמפעיל אזהרות יהיה
נדחה.

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

-w דחק את כל האזהרות, כולל אלו ש-GNU CPP מנפיק כברירת מחדל.

-קַפְּדָנִי
הנפק את כל האבחונים החובה המפורטים בתקן C. חלקם נשארו
כברירת מחדל, מכיוון שהם מופעלים לעתים קרובות בקוד לא מזיק.

-פדנטיות-טעויות
הנפק את כל האבחון החובה, והפוך את כל האבחון החובה לשגיאות.
זה כולל אבחון חובה ש-GCC מנפיק בלעדיו -קַפְּדָנִי אלא מתייחס כמו
אזהרות.

-M במקום להוציא את התוצאה של עיבוד מקדים, פלט כלל מתאים לעשות
תיאור התלות של קובץ המקור הראשי. המעבד המקדים מוציא אחד
לעשות כלל המכיל את שם קובץ האובייקט עבור אותו קובץ מקור, נקודתיים והשמות
של כל הקבצים הכלולים, כולל אלה שמגיעים -לִכלוֹל or -אימאקרו הפקודה
אפשרויות קו.

אלא אם צוין במפורש (עם -MT or -MQ), שם קובץ האובייקט מורכב מה-
שם קובץ המקור עם כל סיומת שהוחלפה בסיומת קובץ אובייקט ובסיומת כלשהי
חלקי הספרייה המובילים הוסרו. אם יש הרבה קבצים כלולים אז הכלל הוא
לפצל למספר שורות באמצעות \-שורה חדשה. לכלל אין פקודות.

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

חולף -M לנהג מרמז -E, ומדכא אזהרות עם מרומז -w.

-ממ כמו -M אבל אל תזכיר קבצי כותרות שנמצאים בספריות כותרות של המערכת,
וגם לא קבצי כותרות הנכללים, במישרין או בעקיפין, מכותרת כזו.

זה מרמז כי הבחירה של סוגריים זווית או מרכאות כפולות ב #include
ההנחיה כשלעצמה אינה קובעת אם הכותרת הזו תופיע ב -ממ
פלט תלות. זהו שינוי קל בסמנטיקה מגרסאות GCC 3.0 ו
מוקדם יותר.

-MF פילה
בעת שימוש עם -M or -ממ, מציין קובץ לכתוב אליו את התלות. אם לא -MF
מתג נתון שהקדם-מעבד שולח את הכללים לאותו מקום שהוא היה שולח
פלט מעובד מראש.

בשימוש עם אפשרויות הנהג -MD or -MMD, -MF עוקף את תלות ברירת המחדל
קובץ פלט.

-MG בשילוב עם אפשרות כגון -M מבקש יצירת תלות, -MG מניח
קבצי כותרת חסרים הם קבצים שנוצרו ומוסיפים אותם לרשימת התלות ללא
העלאת שגיאה. שם קובץ התלות נלקח ישירות מה-"#include"
הנחיה מבלי להקדים שום נתיב. -MG גם מדכא פלט מעובד מראש, כמו א
קובץ כותרת חסר הופך את זה לחסר תועלת.

תכונה זו משמשת לעדכון אוטומטי של קבצי makefile.

-MP אפשרות זו מורה ל-CPP להוסיף יעד מזויף עבור כל תלות מלבד ה-
הקובץ הראשי, מה שגורם לכל אחד להיות תלוי בכלום. חוקי הדמה האלה עוקפים שגיאות
לעשות נותן אם תסיר קבצי כותרת מבלי לעדכן את קובץ Makefile להתאים.

זהו פלט טיפוסי:

test.o: test.c test.h

test.h:

-MT יעד
שנה את יעד הכלל הנפלט על ידי יצירת תלות. כברירת מחדל CPP לוקח
שם קובץ הקלט הראשי, מוחק כל רכיבי ספרייה וכל סיומת קובץ
כמו .c, ומוסיף את סיומת האובייקט הרגילה של הפלטפורמה. התוצאה היא המטרה.

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

לדוגמה, -MT '$(objpfx)foo.o' עשוי לתת

$(objpfx)foo.o: foo.c

-MQ יעד
כמו -MT, אבל זה מצטט כל תווים שהם מיוחדים ליצירה.
-MQ '$(objpfx)foo.o' נותן

$$(objpfx)foo.o: foo.c

יעד ברירת המחדל מצוטט באופן אוטומטי, כאילו הוא ניתן עם -MQ.

-MD -MD שווה -M -MF פילהחוץ מזה -E אינו משתמע. הנהג
קובע פילה בהתבסס על האם א -o ניתנת אפשרות. אם כן, הנהג משתמש בו
טיעון אבל עם סיומת של .d, אחרת זה לוקח את השם של קובץ הקלט,
מסיר כל רכיבי ספרייה וסיומת, ומחיל א .d סיומת.

If -MD משמש בשילוב עם -E, כל -o מתג מובן כדי לציין את
קובץ פלט תלות, אך אם נעשה בו שימוש ללא -E, כל אחד -o מובן לציין א
קובץ אובייקט המטרה.

מאז -E אינו משתמע, -MD יכול לשמש ליצירת קובץ פלט תלות בתור א
תופעת לוואי של תהליך הקומפילציה.

-MMD
כמו -MD מלבד לציין רק קבצי כותרות של משתמש, לא קובצי כותרות של מערכת.

-x c
-x c ++
-x מטרה-ג
-x assembler-with-cpp
ציין את שפת המקור: C, C++, Objective-C או assembly. אין לזה שום קשר
עם התאמה לתקנים או הרחבות; זה רק בוחר לאיזה תחביר בסיס
לְצַפּוֹת. אם לא תיתן אף אחת מהאפשרויות הללו, cpp יגזור את השפה מה-
סיומת קובץ המקור: .c, . DC, .m, או .S. כמה הרחבות נפוצות אחרות עבור
גם C++ ו-assembly מוכרים. אם cpp לא מזהה את התוסף, זה
יתייחס לקובץ כ-C; זהו המצב הגנרי ביותר.

הערה: גרסאות קודמות של cpp התקבלו א -לאנג אפשרות שבחרה הן את
השפה ורמת התאימות לתקנים. אפשרות זו הוסרה, בגלל
זה מתנגש עם -l אוֹפְּצִיָה.

-std=תֶקֶן
-אנסי
ציין את התקן שאליו הקוד צריך להתאים. כרגע CPP יודע על C
ותקני C++; אחרים עשויים להתווסף בעתיד.

תֶקֶן יכול להיות אחד מ:

"c90"
"c89"
"iso9899:1990"
תקן ISO C משנת 1990. c90 הוא הקיצור המקובל לגרסה זו של
הסטנדרט.

-אנסי האופציה שווה ל -std=c90.

"iso9899:199409"
תקן 1990 C, כפי שתוקן ב-1994.

"iso9899:1999"
"c99"
"iso9899:199x"
"c9x"
תקן ISO C המתוקן, שפורסם בדצמבר 1999. לפני הפרסום, זה
היה ידוע בשם C9X.

"iso9899:2011"
"c11"
"c1x"
תקן ISO C המתוקן, שפורסם בדצמבר 2011. לפני הפרסום, זה
היה ידוע בשם C1X.

"gnu90"
"gnu89"
תקן 1990 C בתוספת הרחבות GNU. זוהי ברירת המחדל.

"gnu99"
"gnu9x"
תקן C 1999 בתוספת הרחבות של GNU.

"gnu11"
"gnu1x"
תקן C 2011 בתוספת הרחבות של GNU.

"c++98"
תקן ISO C++ משנת 1998 בתוספת תיקונים.

"gnu++98"
זהה ל 98. std = c ++ בתוספת הרחבות של GNU. זוהי ברירת המחדל עבור קוד C++.

-אני- פצל את נתיב הכלול. כל ספריות שצוינו עם -I אפשרויות לפני -אני- יש לו
חיפשו רק כותרות שהתבקשו עם "#include"קוֹבֶץ""; לא מחפשים אותם
"#לִכלוֹלקובץ>". אם צוינו ספריות נוספות עם -I אפשרויות לאחר ה
-אני-, המדריכים האלה מחפשים את כולם #include הוראות.

בנוסף, -אני- מעכב את השימוש בספרייה של ספריית הקבצים הנוכחית כ
ספריית החיפוש הראשונה עבור "#include"קוֹבֶץ"".

אפשרות זו הוצאה משימוש.

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

-nostdinc++
אל תחפש קבצי כותרות בספריות הסטנדרטיות הספציפיות ל-C++, אבל עדיין תעשה
חפש בספריות הסטנדרטיות האחרות. (אפשרות זו משמשת בעת בניית ה-C++
סִפְרִיָה.)

-לִכלוֹל פילה
תַהֲלִיך פילה כאילו "#include "קובץ"" הופיע כשורה הראשונה של המקור הראשי
קוֹבֶץ. עם זאת, הספרייה הראשונה שחיפשה פילה האם הפרה-מעבד עובד
בספרייה במקום of הספרייה המכילה את קובץ המקור הראשי. אם לא נמצא
שם, מחפשים אותו בשארית שרשרת החיפוש "#include "..."" כמו
רגיל.

אם מרובה -לִכלוֹל ניתנות אפשרויות, הקבצים כלולים בסדר שהם
מופיעים בשורת הפקודה.

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

כל הקבצים שצוינו על ידי -אימאקרו מעובדים לפני כל הקבצים שצוינו על ידי -לִכלוֹל.

-ידirafter dir
חיפוש dir עבור קובצי כותרות, אבל עשה זאת לאחר כל הספריות שצוינו עם -I ו
ספריות מערכת סטנדרטיות מוצו. dir מתייחסים למערכת הכוללת
מַדרִיך. אם dir מתחיל ב-"=", ואז ה-"=" יוחלף ב-sysroot
קידומת; לִרְאוֹת --sysroot ו -isysroot.

-iprefix קידומת
לפרט קידומת בתור הקידומת עבור הבאות -iwithprefix אפשרויות. אם הקידומת
מייצג ספרייה, עליך לכלול את הסופי /.

-iwithprefix dir
-iwithprefixbefore dir
צרף dir לקידומת שצוינה קודם לכן עם -iprefix, ומוסיפים את המתקבל
ספרייה לנתיב החיפוש כולל. -iwithprefixbefore שם אותו באותו מקום -I
היה; -iwithprefix שם את זה איפה -ידirafter היה.

-isysroot dir
אפשרות זו היא כמו ה --sysroot אפשרות, אך חלה רק על קובצי כותרת (למעט
דרווין ממקד, שם זה חל גם על קבצי כותרות וגם על ספריות). ראה את
--sysroot אפשרות למידע נוסף.

-אימולטיבי dir
השתמש dir כספריית משנה של הספרייה המכילה כותרות C++ ספציפיות ליעד.

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

If dir מתחיל ב-"=", ואז ה-"=" יוחלף בקידומת ה-sysroot; לִרְאוֹת
--sysroot ו -isysroot.

-אני מצטט dir
חיפוש dir רק עבור קבצי כותרות שהתבקשו עם "#include"קוֹבֶץ""; הם לא
חיפש את "#includeקובץ>", לפני כל הספריות שצוינו על ידי -I ולפני
ספריות מערכת סטנדרטיות.

If dir מתחיל ב-"=", ואז ה-"=" יוחלף בקידומת ה-sysroot; לִרְאוֹת
--sysroot ו -isysroot.

-fdirectives-בלבד
בעת עיבוד מקדים, טפל בהנחיות, אך אל תרחיב פקודות מאקרו.

התנהגות האופציה תלויה ב -E ו -מעובד מראש אפשרויות.

עם -E, עיבוד מקדים מוגבל לטיפול בהנחיות כגון "#define",
"#ifdef", ו-"#error". פעולות קדם-מעבד אחרות, כגון הרחבת מאקרו ו
המרת טריגרף לא מבוצעת. בנוסף -dD האפשרות היא במרומז
מאופשר.

עם -מעובד מראש, הגדרה מראש של שורת הפקודה ורוב פקודות המאקרו המובנות היא
נָכֶה. מאקרו כגון "__LINE__", שהם תלויי הקשר, מטופלים
בדרך כלל. זה מאפשר הידור של קבצים שעובדו קודם לכן עם "-E
-fdirectives-בלבד".

עם שניהם -E ו -מעובד מראש, הכללים עבור -מעובד מראש לקבל עדיפות. זֶה
מאפשר עיבוד מקדים מלא של קבצים שעובדו קודם לכן עם "-E
-fdirectives-בלבד".

-fdollars-in-identifiers
לְקַבֵּל $ במזהים.

-מזהים-fextended
קבל שמות תווים אוניברסליים במזהים. אפשרות זו היא ניסיונית; ב
גרסה עתידית של GCC, היא תופעל כברירת מחדל עבור C99 ו-C++.

-fno-canonical-system-headers
בעת עיבוד מקדים, אל תקצר נתיבי כותרת של המערכת באמצעות קנוניזציה.

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

-מעובד מראש משתמע אם לקובץ הקלט יש אחת מהסיומות .i, .ii or .מִי.
אלו הן ההרחבות ש-GCC משתמש בהן עבור קבצים מעובדים מראש שנוצרו על ידי -חיסכון-טמפ'.

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

-fdebug-cpp
אפשרות זו שימושית רק לאיתור באגים של GCC. בשימוש עם -E, דופק ניפוי באגים
מידע על מפות מיקום. לפני כל אסימון בפלט יש dump של
המפה שייך למיקומה. המזבלה של המפה שמחזיקה את מיקומו של אסימון
יהיה:

{"P":F ;"F":F ;"L": ;"C": ;"S": ;"M": ;"E": "loc": }

בשימוש ללא -E, לאפשרות זו אין השפעה.

-ftrack-macro-expansion[=רָמָה]
עקוב אחר מיקומים של אסימונים על פני הרחבות מאקרו. זה מאפשר למהדר לפלוט
אבחון לגבי ערימת הרחבת המאקרו הנוכחית כאשר מתרחשת שגיאת קומפילציה ב
הרחבת מאקרו. שימוש באפשרות זו גורם למעבד הפרה ולקומפיילר לצרוך
יותר זיכרון. ה רָמָה ניתן להשתמש בפרמטר כדי לבחור את רמת הדיוק של האסימון
מעקב אחר מיקום ובכך מקטין את צריכת הזיכרון במידת הצורך. ערך 0 of
רָמָה מבטל את האפשרות הזו כאילו לא -ftrack-macro-expansion היה נוכח ב
שורת הפקודה. ערך 1 עוקב אחר מיקומי אסימונים במצב מושפל למען
זיכרון תקורה מינימלי. במצב זה כל האסימונים הנובעים מהרחבה של an
לארגומנט של מאקרו דמוי פונקציה יש אותו מיקום. ערך 2 עוקב אחר אסימונים
מיקומים לחלוטין. הערך הזה הוא הכי רעב לזיכרון. כאשר אפשרות זו ניתנת
אין ארגומנט, ערך ברירת המחדל של הפרמטר הוא 2.

שימו לב ש-ftrack-macro-expansion=2 מופעל כברירת מחדל.

-fexec-charset=ערכה
הגדר את ערכת תווי הביצוע, המשמשת לקבועי מחרוזת ותווים. ברירת המחדל
הוא UTF-8. ערכה יכול להיות כל קידוד שנתמך על ידי ספריית "iconv" של המערכת
שגרה.

-fwide-exec-charset=ערכה
הגדר את ערכת תווי הביצוע הרחבה, המשמשת עבור מחרוזת רחבה וקבועי תווים.
ברירת המחדל היא UTF-32 או UTF-16, מה שמתאים לרוחב של "wchar_t". כפי ש
עם -fexec-charset, ערכה יכול להיות כל קידוד שנתמך על ידי ה"אייקון" של המערכת
שגרת ספרייה; עם זאת, יהיו לך בעיות עם קידודים שאינם מתאימים
בדיוק ב-"wchar_t".

-finput-charset=ערכה
הגדר את ערכת תווי הקלט, המשמשת לתרגום מקבוצת התווים של הקלט
קובץ לקבוצת תווי המקור המשמשת את GCC. אם המקום אינו מציין, או GCC
לא יכול לקבל מידע זה מהמקום, ברירת המחדל היא UTF-8. זה יכול להיות
נדחק על ידי המקום או אפשרות שורת הפקודה הזו. כרגע הפקודה
אפשרות הקו מקבלת עדיפות אם יש התנגשות. ערכה יכול להיות כל קידוד
נתמך על ידי שגרת ספריית "iconv" של המערכת.

-fworking-מדריך
אפשר יצירה של סמני קווים בפלט הפרה-מעבד שיאפשרו למהדר
לדעת את ספריית העבודה הנוכחית בזמן העיבוד המקדים. כאשר אפשרות זו היא
מופעלת, המעבד המקדים יפלוט, לאחר סמן הקו הראשוני, סמן קו שני
עם ספריית העבודה הנוכחית ואחריה שני קווים. GCC ישתמש בזה
ספרייה, כאשר היא קיימת בקלט המעובד מראש, כפי שהספרייה נפלטה בשם
ספריית העבודה הנוכחית בחלק מהפורמטים של מידע איתור באגים. אפשרות זו היא
מופעל באופן מרומז אם מידע ניפוי באגים מופעל, אך ניתן למנוע זאת באמצעות
הצורה השלילה -fno-working-directory. אם -P דגל קיים בפקודה
שורה, לאפשרות זו אין השפעה, מכיוון שלא נפלטו הנחיות "#line" כלשהן.

-עמודה-fno-show
אין להדפיס מספרי עמודות באבחון. זה עשוי להיות נחוץ אם יש אבחון
נסרק על ידי תוכנה שאינה מבינה את מספרי העמודות, כגון
dejagnu.

-A לְבַסֵס=לענות
קבע טענה עם הפרדיקט לְבַסֵס ותענה לענות. טופס זה הוא
העדיפו את הצורה הישנה יותר -A לְבַסֵס(לענות), אשר עדיין נתמך, כי זה
אינו משתמש בתווים מיוחדים של מעטפת.

-A -לְבַסֵס=לענות
בטל טענה עם הפרדיקט לְבַסֵס ותענה לענות.

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

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

לגעת ב-foo.h; cpp -dM foo.h

יציג את כל המאקרו שהוגדרו מראש.

אם אתה משתמש -dM בלי ה -E אוֹפְּצִיָה, -dM מתפרש כמילה נרדפת ל
-fdump-rtl-mach.

D כמו M אלא משני בחינות: כן לֹא כלול את פקודות המאקרו המוגדרות מראש, וזה
פלטים שניהם מה היא #define הנחיות והתוצאה של עיבוד מקדים. שני הסוגים
של הפלט עבור לקובץ הפלט הסטנדרטי.

N כמו D, אבל פולט רק את שמות המאקרו, לא את ההרחבות שלהם.

I תְפוּקָה #include הנחיות בנוסף לתוצאה של עיבוד מקדים.

U כמו D אלא שרק פקודות מאקרו מורחבות, או שהגדרתן נבדקת
בהנחיות קדם-מעבד, הם פלט; הפלט מתעכב עד לשימוש או
בדיקה של המאקרו; ו #undef הנחיות מופקות גם עבור פקודות מאקרו שנבדקו אבל
לא מוגדר באותו זמן.

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

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

אתה צריך להיות מוכן לתופעות לוואי בעת השימוש -C; זה גורם למעבד הקדם
להתייחס להערות כאל אסימונים בפני עצמם. לדוגמה, הערות המופיעות ב-
התחלה של מה שיהיה קו הנחיה משפיעה להפוך את הקו הזה ל-an
קו מקור רגיל, מכיוון שהאסימון הראשון בקו אינו עוד a #.

-CC אין להשליך הערות, כולל במהלך הרחבת מאקרו. זה כמו -C, מלבד
שההערות הכלולות בפקודות מאקרו מועברות גם לקובץ הפלט שבו
המאקרו מורחב.

בנוסף לתופעות הלוואי של -C אפשרות, -CC אפשרות גורמת לכל סגנון C++
הערות בתוך מאקרו להמרה להערות בסגנון C. זאת כדי למנוע מאוחר יותר
שימוש במאקרו הזה מהערה בשוגג על שאר שורת המקור.

-CC האופציה משמשת בדרך כלל לתמיכה בהערות מוך.

-מסורתי-cpp
נסו לחקות את ההתנהגות של מעבדי קדם C של פעם, בניגוד ל-ISO C
מעבדי קדם.

-טריגרפים
עיבוד רצפי טריגרף.

-מפה מחדש
אפשר קוד מיוחד כדי לעקוף מערכות קבצים המאפשרות רק קבצים קצרים מאוד
שמות, כגון MS-DOS.

- עזרה
--מטרה-עזרה
הדפס טקסט המתאר את כל אפשרויות שורת הפקודה במקום לעבד כל דבר מראש.

-v מצב מילולי. הדפס את מספר הגרסה של GNU CPP בתחילת הביצוע, וכן
דווח על הטופס הסופי של נתיב הכלול.

-H הדפס את השם של כל קובץ כותרת בשימוש, בנוסף לפעילויות רגילות אחרות. כל אחד
השם מסומן כדי להראות עד כמה עמוק ב- #include מחסנית זה. כותרת מהודרת מראש
מודפסים גם קבצים, גם אם הם נמצאים כלא חוקיים; קומפילציה מראש לא חוקית
קובץ הכותרת מודפס עם ...איקס ותקף עם ...! .

-הפך
--גִרְסָה
הדפס את מספר הגרסה של GNU CPP. עם מקף אחד, המשך לעיבוד מקדים כרגיל.
עם שני מקפים, צא מיד.

הסביבה


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

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

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
הערך של כל משתנה הוא רשימה של ספריות מופרדות על ידי תו מיוחד, הרבה
כמו נתיב, שבו לחפש קבצי כותרות. הדמות המיוחדת,
"PATH_SEPARATOR", תלוי ביעד ונקבע בזמן בניית GCC. עבור מיקרוסופט
יעדים מבוססי Windows זה נקודה-פסיק, וכמעט עבור כל שאר המטרות זה א
המעי הגס.

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

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

בכל המשתנים הללו, אלמנט ריק מורה למהדר לחפש את הזרם שלו
ספריית עבודה. אלמנטים ריקים יכולים להופיע בתחילת או בסופו של נתיב. ל
למשל, אם הערך של CPATH הוא ":/special/include", שיש לו אותה השפעה כמו
-אני. -אני/מיוחד/כולל.

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

הערך של DEPENDENCIES_OUTPUT יכול להיות רק שם קובץ, ובמקרה זה הכללים Make
נכתבים לקובץ הזה, מנחשים את שם היעד משם קובץ המקור. או ה
ערך יכול לקבל את הצורה פילה יעד, ובמקרה זה הכללים נכתבים לתיק פילה
באמצעות יעד כשם היעד.

במילים אחרות, משתנה סביבה זה שווה ערך לשילוב האפשרויות -ממ
ו -MF, עם אופציונלי -MT להחליף גם.

SUNPRO_DEPENDENCIES
משתנה זה זהה ל DEPENDENCIES_OUTPUT (ראה לעיל), מלבד המערכת ההיא
לא מתעלמים מקובצי כותרת, כך שזה מרמז -M ולא -ממ. אולם, ה
התלות בקובץ הקלט הראשי נשמטת.

השתמש ב-aarch64-linux-gnu-cpp-4.8 באופן מקוון באמצעות שירותי onworks.net


Ad


Ad

התוכניות המקוונות האחרונות של לינוקס ו-Windows