unifdef - מקוון בענן

זוהי הפקודה unifdef שניתן להפעיל בספק האירוח החינמי של OnWorks באמצעות אחת מתחנות העבודה המקוונות המרובות שלנו, כגון Ubuntu Online, Fedora Online, אמולטור מקוון של Windows או אמולטור מקוון של MAC OS

תָכְנִית:

שֵׁם


unifdef, unifdefall - הסר תנאי מעבד מראש מהקוד

תַקצִיר


unifdef [-bBcdehKkmnsStV] [-Iנתיב] [-[תְעוּדַת זֶהוּתSYM[=val]] [-[i]USYM] ... [-f תצוגת אופנה] [-x {012}]
[-M טקסט אחורי] [-o אוסף] [בקובץ ...]
unifdefall [-Iנתיב] ... פילה

תיאור


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

השמיים unifdef שירות פועל לפי #אם, #ifdef, #ifndef, #elif, #else, ו #endif קווים, באמצעות
פקודות מאקרו שצוינו ב -D ו -U אפשרויות שורת הפקודה או ב -f קבצי הגדרות. הנחיה
מעובד אם מפרטי המאקרו מספיקים כדי לספק ערך מוגדר עבורו
ביטוי שליטה. אם התוצאה שקרית, ההנחיה והשורות הבאות תחתיה
השליטה מוסרת. אם התוצאה נכונה, רק ההנחיה מוסרת. א #ifdef or
#ifndef ההנחיה מועברת ללא שינוי אם המאקרו השולט שלה לא צוין.
כל #אם or #elif ביטוי שליטה בעל ערך לא ידוע או כזה unifdef לא יכול לנתח
עובר ללא שינוי. כברירת מחדל, unifdef מתעלם #אם ו #elif קווים עם קבוע
ביטויים; ניתן לומר לעבד אותם על ידי ציון ה -k דגל בשורת הפקודה.

הוא מבין קבוצת משנה בשימוש נפוץ של תחביר הביטוי עבור #אם ו #elif שורות:
קבועים שלמים, ערכים שלמים של פקודות מאקרו המוגדרות בשורת הפקודה, ה מוגדר()
מפעיל, המפעילים !, <, >, <=, >=, ==, !=, &&, ||, וביטויים בסוגריים. א
סוג של הערכה של "קצר חשמלי" משמש עבור && אופרטור: אם אחד מהאופרנדים הוא
בהחלט שקר אז התוצאה היא שקר, גם אם הערך של האופרנד השני הוא
לא ידוע. באופן דומה, אם אופרנד של || זה בהחלט נכון אז התוצאה נכונה.

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

ברוב המקרים, unifdef אינו מבחין בין פקודות מאקרו דמויות אובייקט (ללא ארגומנטים)
ופקודות מאקרו דמויות פונקציות (עם ארגומנטים). הפקת מאקרו דמוית פונקציה יכולה להופיע ב
#אם ו #elif ביטויי שליטה. אם המאקרו אינו מוגדר במפורש, או מוגדר
עם -D דגל בשורת הפקודה, או עם #define ב -f קובץ ההגדרות, שלה
מתעלמים מהטיעונים. אם מאקרו אינו מוגדר במפורש בשורת הפקודה עם ה- -U
דגל, או עם #undef ב -f קובץ ההגדרות, ייתכן שלא יהיו לו טיעונים מאז זה
מוביל לשגיאת תחביר.

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

תסריט שנקרא unifdefall ניתן להשתמש כדי להסיר את כל מותנה cpp(1) הנחיות מאת א
קוֹבֶץ. זה משתמש unifdef -s ו cpp -dM כדי לקבל רשימות של כל פקודות המאקרו השולטות ושלהן
הגדרות (או היעדרן), ואז מפעיל unifdef עם טיעונים מתאימים לעיבוד
הקובץ.

אפשרויות


-DSYM=val
ציין שמקרו מוגדר לערך נתון.

-DSYM ציין שמאקרו מוגדר לערך 1.

-USYM ציין שמאקרו אינו מוגדר.

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

-תְעוּדַת זֶהוּתSYM[=val]
-iUSYM מתעלמים ממחרוזות C, הערות והמשך שורה #ifdef ו #ifndef
בלוקים הנשלטים על ידי פקודות מאקרו שצוינו באפשרויות אלה.

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

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

-b החלף שורות שהוסרו בשורות ריקות במקום למחוק אותן. סותרים זה את זה
עם -B אוֹפְּצִיָה.

-B דחוס שורות ריקות מסביב למקטע שנמחק. בלעדי הדדית עם -b
אוֹפְּצִיָה.

-c השלמה, כלומר, קווים שהיו מוסרים או נמחקים נשמרים ו
להיפך.

-d הפעל הדפסה של הודעות ניפוי באגים.

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

-h הדפס עזרה.

-Iנתיב מציין ל unifdefall מקום נוסף לחפש בו #include קבצים. אפשרות זו
מתעלמים על ידי unifdef עבור תאימות עם cpp(1) וכדי לפשט את
הטמעה של unifdefall.

-K התייחס תמיד לתוצאה של && ו || אופרטורים לא ידועים אם אחד מהאופרנדים הוא
לא ידוע, במקום לקצר כאשר אופרנדים לא ידועים אינם יכולים להשפיע על התוצאה.
אפשרות זו מיועדת לתאימות עם גרסאות ישנות יותר של unifdef.

-k התַהֲלִיך #אם ו #elif קווים עם ביטויים קבועים. כברירת מחדל, סעיפים
הנשלט על ידי קווים כאלה עוברים ללא שינוי מכיוון שהם בדרך כלל מתחילים
"#אם 0" ומשמשים כמעין הערה לשרטט התפתחות עתידית או עברה.
זה יהיה גס להפשיט אותם, בדיוק כפי שזה יהיה עבור הערות רגילות.

-m שנה קובץ קלט אחד או יותר במקום.

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

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

-o אוסף
כתוב פלט לקובץ אוסף במקום הפלט הסטנדרטי בעת עיבוד א
קובץ בודד.

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

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

-t משבית ניתוח עבור מחרוזות C, הערות והמשך שורה, וזה שימושי
עבור טקסט רגיל. זוהי גרסה גורפת של -תְעוּדַת זֶהוּת ו -iU דגלים.

-V פרטי גרסת הדפסה.

-x {012}
הגדר את מצב סטטוס היציאה לאפס, אחד או שניים. ראה את יְצִיאָה סטָטוּס סעיף להלן עבור
פרטים.

השמיים unifdef השירות לוקח את הקלט שלו סטדין אם אין פילה טיעונים. אתה חייב להשתמש
מה היא -m or -M אפשרויות אם יש קבצי קלט מרובים. אתה יכול לציין inut מתוך stdin או
פלט ל-stdout עם '-'.

השמיים unifdef כלי השירות עובד יפה עם -DSYM אופציה של הבדל(1).

יְצִיאָה סטָטוּס


בשימוש רגיל ה unifdef מצב היציאה של כלי השירות תלוי במצב שהוגדר באמצעות -x
אוֹפְּצִיָה.

אם מצב היציאה הוא אפס (ברירת המחדל) אז unifdef יוצא עם מצב 0 אם הפלט הוא an
עותק מדויק של הקלט, או עם סטטוס 1 אם הפלט שונה.

אם מצב היציאה הוא אחד, unifdef יוצא עם מצב 1 אם הפלט אינו שונה או 0 אם הוא
שונה.

אם מצב היציאה הוא שני, unifdef יוצא עם סטטוס אפס בשני המקרים.

בכל מצבי היציאה, unifdef יוצא עם סטטוס 2 אם יש שגיאה.

מצב היציאה הוא 0 אם -h or -V אפשרויות שורת הפקודה ניתנות.

דיאגנוסטיקה


יותר מדי רמות של קינון.

לא הולם #elif, #else or #endif.

קו בקרת קדם-מעבד מעורפל.

EOF מוקדם (עם מספר השורה של הקוד האחרון שלא הופסק #אם).

EOF בתגובה.

השתמש ב-unifdef באינטרנט באמצעות שירותי onworks.net



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