EnglishFrenchGermanItalianPortugueseRussianSpanish

ไอคอน Fav ของ OnWorks

mipsel-linux-gnu-cpp - ออนไลน์ใน Cloud

เรียกใช้ mipsel-linux-gnu-cpp ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง mipsel-linux-gnu-cpp ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


cpp - ตัวประมวลผลล่วงหน้า C

เรื่องย่อ


ซีพีพี [-Dแมโคร[=defn]...] [-Uแมโคร]
[-Idir...] [-iquotedir... ]
[-Wเตือน... ]
[-M|-MM] [-MG] [-MF ชื่อไฟล์]
[-MP] [-MQ เป้า... ]
[-MT เป้า... ]
[-P] [-fno-working-ไดเรกทอรี]
[-x ภาษา] [-std=มาตรฐาน]
infile outfile

เฉพาะตัวเลือกที่มีประโยชน์ที่สุดเท่านั้นที่แสดงไว้ที่นี่ ดูด้านล่างสำหรับส่วนที่เหลือ

DESCRIPTION


ตัวประมวลผลล่วงหน้า C มักรู้จักกันในชื่อ cppเป็น แมโคร หน่วยประมวลผล ที่ใช้โดยอัตโนมัติโดย
คอมไพเลอร์ C เพื่อแปลงโปรแกรมของคุณก่อนการคอมไพล์ เรียกว่ามาโคร
โปรเซสเซอร์เพราะมันช่วยให้คุณกำหนด แมโครซึ่งเป็นตัวย่อสั้นๆ อีกต่อไป
โครงสร้าง

ตัวประมวลผลล่วงหน้า C มีวัตถุประสงค์เพื่อใช้กับซอร์สโค้ด C, C++ และ Objective-C เท่านั้น
ในอดีตมันถูกใช้ในทางที่ผิดในฐานะโปรแกรมประมวลผลข้อความทั่วไป มันจะสำลักในการป้อนข้อมูลซึ่ง
ไม่เชื่อฟังกฎเกณฑ์ของ C ตัวอย่างเช่น อะพอสทรอฟีจะถูกตีความว่าเป็น
จุดเริ่มต้นของค่าคงที่อักขระ และทำให้เกิดข้อผิดพลาด ยังพึ่งพาไม่ได้
รักษาลักษณะของอินพุตซึ่งไม่สำคัญต่อภาษาตระกูล C
หาก Makefile ถูกประมวลผลล่วงหน้า ฮาร์ดแท็บทั้งหมดจะถูกลบออก และ Makefile จะ
ไม่ทำงาน

ต้องบอกว่าคุณมักจะเลิกใช้ cpp กับสิ่งที่ไม่ใช่ C. อื่นๆ
ภาษาโปรแกรม Algol-ish มักจะปลอดภัย (Pascal, Ada เป็นต้น) เช่นเดียวกับการประกอบกับ
คำเตือน. -traditional-cpp โหมดจะคงพื้นที่สีขาวไว้มากกว่าเดิม
อนุญาต ปัญหามากมายสามารถหลีกเลี่ยงได้โดยการเขียนความคิดเห็นสไตล์ C หรือ C++
แทนที่จะแสดงความคิดเห็นเป็นภาษาแม่ และทำให้มาโครเรียบง่าย

เมื่อใดก็ตามที่เป็นไปได้ คุณควรใช้ตัวประมวลผลล่วงหน้าที่ปรับให้เข้ากับภาษาที่คุณกำลังเขียน
แอสเซมเบลอร์ GNU รุ่นทันสมัยมีสิ่งอำนวยความสะดวกมาโคร ระดับสูงที่สุด
ภาษาโปรแกรมมีกลไกการคอมไพล์แบบมีเงื่อนไขและการรวม ถ้า
อย่างอื่นล้มเหลว ลองใช้ตัวประมวลผลข้อความทั่วไปที่แท้จริง เช่น GNU M4

ตัวประมวลผลล่วงหน้า C แตกต่างกันไปในรายละเอียดบางอย่าง คู่มือนี้กล่าวถึงตัวประมวลผลล่วงหน้า GNU C ซึ่ง
ให้ superset ขนาดเล็กของคุณสมบัติของ ISO Standard C ในโหมดเริ่มต้น GNU
ตัวประมวลผลล่วงหน้า C ไม่ได้ทำบางสิ่งที่มาตรฐานกำหนด นี่คือคุณสมบัติ
ซึ่งไม่ค่อยได้ใช้และอาจทำให้ความหมายเปลี่ยนไปอย่างน่าประหลาดใจ
โปรแกรมที่ไม่คาดหวังพวกเขา เพื่อให้ได้ ISO Standard C ที่เข้มงวด คุณควรใช้
-std=c90, -std=c99 or -std=c11 ตัวเลือกขึ้นอยู่กับรุ่นของมาตรฐานที่คุณ
ต้องการ. ในการรับการวินิจฉัยที่จำเป็นทั้งหมด คุณต้องใช้ .ด้วย -อวดดี.

คู่มือนี้อธิบายลักษณะการทำงานของตัวประมวลผลล่วงหน้า ISO เพื่อลดการให้เปล่า
ความแตกต่าง โดยที่พฤติกรรมของตัวประมวลผลล่วงหน้า ISO ไม่ขัดแย้งกับแบบดั้งเดิม
ความหมาย ตัวประมวลผลล่วงหน้าแบบดั้งเดิมควรปฏิบัติในลักษณะเดียวกัน ต่างๆ
ความแตกต่างที่มีอยู่มีรายละเอียดอยู่ในส่วน แบบดั้งเดิม โหมด.

เพื่อความชัดเจน เว้นแต่จะระบุไว้เป็นอย่างอื่น การอ้างอิงถึง CPP ในคู่มือนี้อ้างถึง GNU CPP

OPTIONS


ตัวประมวลผลล่วงหน้า C ต้องการชื่อไฟล์สองชื่อเป็นอาร์กิวเมนต์ infile และ outfile.
ตัวประมวลผลล่วงหน้าอ่าน infile ร่วมกับไฟล์อื่นๆ ที่ระบุด้วย #include. ทั้งหมด
เอาต์พุตที่สร้างโดยไฟล์อินพุตที่รวมกันจะถูกเขียนใน outfile.

แต่ละ infile or outfile อาจจะ -ซึ่งเป็น infile หมายถึงการอ่านจากอินพุตมาตรฐานและ
as outfile หมายถึงการเขียนไปยังเอาต์พุตมาตรฐาน นอกจากนี้ หากละไฟล์ใดไฟล์หนึ่งออกไป หมายความว่า
เหมือนกับถ้า - ระบุไว้สำหรับไฟล์นั้น

เว้นแต่จะระบุไว้เป็นอย่างอื่น หรือตัวเลือกลงท้ายด้วย =, ตัวเลือกทั้งหมดที่มีอาร์กิวเมนต์อาจ
ให้อาร์กิวเมนต์นั้นปรากฏขึ้นทันทีหลังตัวเลือกหรือเว้นวรรคระหว่าง
ตัวเลือกและอาร์กิวเมนต์: -ไอฟู และ -I foo มีผลเช่นเดียวกัน

หลายตัวเลือกมีชื่อหลายตัวอักษร ดังนั้นตัวเลือกตัวอักษรเดี่ยวหลายตัวอาจ ไม่ be
จัดกลุ่ม: -dM แตกต่างจาก -d -M.

-D ชื่อ
กำหนดล่วงหน้า ชื่อ เป็นมาโครที่มีคำจำกัดความ 1

-D ชื่อ=คำนิยาม
เนื้อหาของ คำนิยาม ถูก tokenized และประมวลผลราวกับว่ามันปรากฏขึ้นระหว่าง
การแปลขั้นตอนที่สามในa #กำหนด คำสั่ง โดยเฉพาะคำนิยามจะเป็น
ตัดทอนด้วยอักขระขึ้นบรรทัดใหม่แบบฝัง

หากคุณกำลังเรียกใช้ตัวประมวลผลล่วงหน้าจากเชลล์หรือโปรแกรมที่คล้ายเชลล์ คุณอาจต้อง
เพื่อใช้ไวยากรณ์การอ้างอิงของเชลล์เพื่อปกป้องอักขระเช่นช่องว่างที่มี
ความหมายในไวยากรณ์ของเชลล์

หากคุณต้องการกำหนดมาโครที่เหมือนฟังก์ชันบนบรรทัดคำสั่ง ให้เขียนอาร์กิวเมนต์ของมัน
รายการที่มีวงเล็บล้อมรอบก่อนเครื่องหมายเท่ากับ (ถ้ามี) วงเล็บคือ
มีความหมายกับเชลล์ส่วนใหญ่ ดังนั้น คุณจะต้องอ้างอิงตัวเลือก กับ sh และ csh,
-NS'ชื่อ(อาร์กิว...)=คำนิยาม' โรงงาน

-D และ -U ตัวเลือกจะได้รับการประมวลผลตามลำดับที่ได้รับบนบรรทัดคำสั่ง ทั้งหมด
-imacros ไฟล์ และ - รวม ไฟล์ ตัวเลือกจะถูกประมวลผลหลังจากทั้งหมด -D และ -U ตัวเลือก

-U ชื่อ
ยกเลิกคำจำกัดความก่อนหน้าของ ชื่อสร้างขึ้นในหรือจัดให้มี -D ตัวเลือก

-undef
อย่ากำหนดมาโครเฉพาะระบบหรือเฉพาะ GCC ไว้ล่วงหน้า มาตรฐานที่กำหนดไว้ล่วงหน้า
มาโครยังคงกำหนดไว้

-I dir
เพิ่มไดเร็กทอรี dir ไปที่รายการไดเร็กทอรีที่จะค้นหาไฟล์ส่วนหัว

ไดเร็กทอรีที่ชื่อ -I จะถูกค้นหาก่อนที่ระบบมาตรฐานจะรวมไดเร็กทอรี
ถ้าไดเร็กทอรี dir เป็นระบบมาตรฐานรวมถึงไดเร็กทอรีตัวเลือกจะถูกละเว้นไปยัง
ตรวจสอบให้แน่ใจว่าลำดับการค้นหาเริ่มต้นสำหรับไดเร็กทอรีระบบและการปฏิบัติพิเศษ
ของส่วนหัวของระบบไม่แพ้ ถ้า dir ขึ้นต้นด้วย "=" จากนั้น "=" จะเป็น
แทนที่ด้วยคำนำหน้า sysroot; ดู --sysroot และ -isysroot.

-o ไฟล์
เขียนเอาต์พุตไปที่ ไฟล์. นี้เหมือนกับการระบุ ไฟล์ เป็นทางเลือกที่สอง
อาร์กิวเมนต์ถึง cpp. gcc มีการตีความที่แตกต่างกันของอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกที่สอง
ดังนั้นคุณต้องใช้ -o เพื่อระบุไฟล์ที่ส่งออก

-ผนัง
เปิดคำเตือนทางเลือกทั้งหมดที่ต้องการสำหรับรหัสปกติ ปัจจุบันนี้
is -ความคิดเห็น, -Wtrigraphs, -Wmulticar และคำเตือนเรื่องการเลื่อนจำนวนเต็มทำให้เกิด a
เปลี่ยนเครื่องหมายในนิพจน์ "#if" โปรดทราบว่าคำเตือนของตัวประมวลผลล่วงหน้าจำนวนมาก
จะเปิดไว้โดยค่าเริ่มต้นและไม่มีตัวเลือกให้ควบคุม

-ความคิดเห็น
-ความคิดเห็น
เตือนเมื่อใดก็ตามที่ความคิดเห็นเริ่มต้นลำดับ /* ปรากฏใน a /* แสดงความคิดเห็นหรือเมื่อใดก็ตามที่
แบ็กสแลช-ขึ้นบรรทัดใหม่ปรากฏใน a // ความคิดเห็น (ทั้งสองรูปแบบมีผลเหมือนกัน)

-Wtrigraphs
ไตรกราฟส่วนใหญ่ในความคิดเห็นไม่สามารถส่งผลต่อความหมายของโปรแกรมได้ อย่างไรก็ตาม a
ไตรกราฟที่จะขึ้นบรรทัดใหม่หนี (??/ ที่ท้ายบรรทัด) สามารถ, โดย
เปลี่ยนตำแหน่งที่ความคิดเห็นเริ่มต้นหรือสิ้นสุด ดังนั้น เฉพาะตรีโกณมิติที่จะเกิด
การขึ้นบรรทัดใหม่ทำให้เกิดคำเตือนภายในความคิดเห็น

ตัวเลือกนี้มีความหมายโดย -ผนัง. ถ้า -ผนัง ไม่ได้รับ ตัวเลือกนี้ยังคงเปิดใช้งานอยู่
เว้นแต่จะเปิดใช้งาน trigraphs หากต้องการรับการแปลงไตรกราฟโดยไม่มีการเตือน แต่รับ
อื่น ๆ -ผนัง คำเตือน ใช้ -trigraphs -ผนัง -Wno-trigraphs.

-แบบดั้งเดิม
เตือนเกี่ยวกับโครงสร้างบางอย่างที่ทำงานแตกต่างกันในแบบดั้งเดิมและ ISO C นอกจากนี้
เตือนเกี่ยวกับโครงสร้าง ISO C ที่ไม่มี C เทียบเท่าแบบดั้งเดิมและมีปัญหา
โครงสร้างที่ควรหลีกเลี่ยง

-วันเดฟ
เตือนเมื่อใดก็ตามที่พบตัวระบุที่ไม่ใช่แมโครในan #ถ้า สั่ง
ด้านนอกของ กำหนด. ตัวระบุดังกล่าวจะถูกแทนที่ด้วยศูนย์

-Wunused-มาโคร
เตือนเกี่ยวกับแมโครที่กำหนดไว้ในไฟล์หลักที่ไม่ได้ใช้ มาโครคือ มือสอง ถ้ามันเป็น
ขยายหรือทดสอบการดำรงอยู่อย่างน้อยหนึ่งครั้ง ตัวประมวลผลล่วงหน้าจะเตือนด้วยถ้า
ไม่ได้ใช้มาโครในขณะที่มีการกำหนดใหม่หรือไม่ได้กำหนดไว้

มาโครในตัว มาโครที่กำหนดไว้ในบรรทัดคำสั่ง และมาโครที่กำหนดไว้ใน include
ไฟล์ไม่ได้รับการเตือนเกี่ยวกับ

บันทึก: หากใช้มาโครจริง แต่ใช้ในบล็อกตามเงื่อนไขที่ข้ามเท่านั้น
CPP จะแจ้งว่าไม่ได้ใช้ เพื่อหลีกเลี่ยงคำเตือนในกรณีนี้ คุณอาจปรับปรุง
ขอบเขตของคำจำกัดความของมาโคร ตัวอย่างเช่น ย้ายไปยังส่วนที่ข้ามไปครั้งแรก
บล็อก. อีกทางหนึ่ง คุณสามารถใช้หุ่นจำลองกับสิ่งต่อไปนี้:

#ถ้ากำหนด the_macro_causing_the_warning
#endif

-Wendif-ป้ายกำกับ
เตือนเมื่อใดก็ตามที่ an #อื่น หรือ #endif ตามด้วยข้อความ ซึ่งมักจะเกิดขึ้นใน
รหัสของแบบฟอร์ม

#ถ้า FOO
...
#else FOO
...
#endif FOO

"FOO" ตัวที่สองและสามควรอยู่ในความคิดเห็น แต่มักไม่อยู่ในโปรแกรมรุ่นเก่า
คำเตือนนี้เปิดอยู่โดยค่าเริ่มต้น

-Werror
ทำให้คำเตือนทั้งหมดเป็นข้อผิดพลาดยาก ซอร์สโค้ดที่ทริกเกอร์คำเตือนจะเป็น
ปฏิเสธ

-Wsystem-ส่วนหัว
ออกคำเตือนสำหรับรหัสในส่วนหัวของระบบ สิ่งเหล่านี้มักไม่ช่วยในการค้นหา
ข้อบกพร่องในรหัสของคุณจึงถูกระงับ หากคุณเป็นผู้รับผิดชอบระบบ
ห้องสมุดคุณอาจต้องการเห็นพวกเขา

-w ระงับคำเตือนทั้งหมด รวมถึงคำเตือนที่ GNU CPP ออกโดยค่าเริ่มต้น

-อวดดี
ออกการวินิจฉัยบังคับทั้งหมดที่ระบุไว้ในมาตรฐาน C เหลือบ้างแล้ว
ออกโดยค่าเริ่มต้น เนื่องจากมักเรียกใช้โค้ดที่ไม่เป็นอันตราย

-pedantic-ข้อผิดพลาด
ออกการวินิจฉัยที่จำเป็นทั้งหมด และทำให้การวินิจฉัยที่จำเป็นทั้งหมดกลายเป็นข้อผิดพลาด
ซึ่งรวมถึงการวินิจฉัยบังคับที่ GCC ออกโดยไม่มี -อวดดี แต่ถือว่า
คำเตือน

-M แทนที่จะส่งออกผลลัพธ์ของการประมวลผลล่วงหน้า ให้ส่งออกกฎที่เหมาะสมสำหรับ ทำ
อธิบายการขึ้นต่อกันของไฟล์ต้นฉบับหลัก ตัวประมวลผลล่วงหน้าส่งออกหนึ่ง
ทำ กฎที่มีชื่อไฟล์อ็อบเจ็กต์สำหรับไฟล์ต้นทาง ทวิภาค และชื่อ
ของไฟล์ที่รวมไว้ทั้งหมด รวมทั้งไฟล์ที่มาจาก - รวม or -imacros คำสั่ง -
ตัวเลือกบรรทัด

เว้นแต่ระบุไว้อย่างชัดเจน (ด้วย -MT or -MQ) ชื่อไฟล์อ็อบเจ็กต์ประกอบด้วย
ชื่อของไฟล์ต้นฉบับที่มีส่วนต่อท้ายใดๆ แทนที่ด้วยส่วนต่อท้ายของไฟล์อ็อบเจ็กต์และด้วย any
นำส่วนไดเร็กทอรีชั้นนำออก หากมีไฟล์รวมอยู่หลายไฟล์ กฎก็คือ
แบ่งออกเป็นหลายบรรทัดโดยใช้ \-ขึ้นบรรทัดใหม่ กฎไม่มีคำสั่ง

ตัวเลือกนี้จะไม่ระงับเอาต์พุตการดีบักของตัวประมวลผลล่วงหน้า เช่น -dM. หลีกเลี่ยง
การผสมเอาต์พุตการดีบักดังกล่าวกับกฎการพึ่งพา คุณควรระบุ . อย่างชัดเจน
ไฟล์เอาต์พุตการพึ่งพาด้วย -MFหรือใช้ตัวแปรสภาพแวดล้อมเช่น
DEPENDENCIES_OUTPUT. เอาต์พุตการดีบักจะยังคงถูกส่งไปยังสตรีมเอาต์พุตปกติเป็น
ปกติ

ที่ผ่านไป -M แก่คนขับ หมายความถึง -Eและระงับคำเตือนโดยปริยาย -w.

-MM ชอบ -M แต่อย่าพูดถึงไฟล์ส่วนหัวที่พบในไดเร็กทอรีส่วนหัวของระบบ
หรือไฟล์ส่วนหัวที่รวมโดยตรงหรือโดยอ้อมจากส่วนหัวดังกล่าว

นี่หมายความว่าการเลือกวงเล็บมุมหรือเครื่องหมายคำพูดคู่ใน #include
คำสั่งไม่ได้กำหนดว่าส่วนหัวนั้นจะปรากฏใน -MM
เอาต์พุตการพึ่งพา นี่เป็นการเปลี่ยนแปลงเล็กน้อยในความหมายจาก GCC เวอร์ชัน 3.0 และ
ก่อน

-MF ไฟล์
เมื่อใช้กับ -M or -MMระบุไฟล์ที่จะเขียนการพึ่งพา ถ้าไม่ -MF
สวิตช์จะได้รับตัวประมวลผลล่วงหน้าส่งกฎไปยังที่เดียวกับที่มันจะส่ง
เอาต์พุตที่ประมวลผลล่วงหน้า

เมื่อใช้ร่วมกับตัวเลือกไดรเวอร์ -MD or -MMD, -MF แทนที่การพึ่งพาเริ่มต้น
ไฟล์ที่ส่งออก

-MG ร่วมกับตัวเลือกเช่น -M ขอสร้างการพึ่งพา -MG ถือว่า
ไฟล์ส่วนหัวที่หายไปจะถูกสร้างไฟล์และเพิ่มลงในรายการการพึ่งพาโดยไม่ต้อง
ทำให้เกิดข้อผิดพลาด ชื่อไฟล์การพึ่งพานั้นนำมาโดยตรงจาก "#include"
คำสั่งโดยไม่ต้องเติมเส้นทางใด ๆ -MG ยังระงับเอาต์พุตที่ประมวลผลล่วงหน้าเป็น a
ไฟล์ส่วนหัวที่ขาดหายไปทำให้สิ่งนี้ไม่มีประโยชน์

คุณลักษณะนี้ใช้ในการอัพเดต makefiles โดยอัตโนมัติ

-MP ตัวเลือกนี้แนะนำให้ CPP เพิ่มเป้าหมายปลอมสำหรับการพึ่งพาแต่ละรายการนอกเหนือจาก
ไฟล์หลักทำให้แต่ละไฟล์ไม่ต้องพึ่งพาอะไร กฎจำลองเหล่านี้หลีกเลี่ยงข้อผิดพลาด
ทำ ให้ถ้าคุณลบไฟล์ส่วนหัวโดยไม่ต้องอัปเดต Makefile เพื่อให้ตรงกับ.

นี่คือผลลัพธ์ทั่วไป:

test.o: test.c test.h

ทดสอบ h:

-MT เป้า
เปลี่ยนเป้าหมายของกฎที่ปล่อยออกมาจากการสร้างการพึ่งพา โดยค่าเริ่มต้น CPP จะใช้เวลา
ชื่อของไฟล์อินพุตหลัก ลบส่วนประกอบไดเร็กทอรีและส่วนต่อท้ายไฟล์ใดๆ
เช่น .cและผนวกส่วนต่อท้ายอ็อบเจ็กต์ปกติของแพลตฟอร์ม ผลที่ได้คือเป้าหมาย

An -MT option จะกำหนดเป้าหมายให้เป็นสตริงที่คุณระบุ ถ้าคุณต้องการ
หลายเป้าหมาย คุณสามารถระบุให้เป็นอาร์กิวเมนต์เดียวได้ -MTหรือใช้หลายตัว
-MT ตัวเลือก

ตัวอย่างเช่น -MT '$(objpfx)foo.o' อาจให้

$(objpfx)foo.o: foo.c

-MQ เป้า
เหมือนกับ -MTแต่จะอ้างอิงถึงอักขระใดๆ ที่มีลักษณะพิเศษเฉพาะสำหรับ Make
-MQ '$(objpfx)foo.o' จะช่วยให้

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

เป้าหมายเริ่มต้นจะได้รับการเสนอราคาโดยอัตโนมัติ ราวกับว่าได้รับด้วย -MQ.

-MD -MD เทียบเท่ากับ -M -MF ไฟล์ยกเว้นว่า -E ไม่ได้หมายความถึง คนขับ
แน่นอน ไฟล์ ขึ้นอยู่กับว่า an -o มีตัวเลือกให้ หากใช่ ไดรเวอร์จะใช้
อาร์กิวเมนต์ แต่มีคำต่อท้ายของ .dมิฉะนั้นจะใช้ชื่อของไฟล์อินพุต
ลบส่วนประกอบไดเร็กทอรีและคำต่อท้าย และใช้a .d วิภัตติ

If -MD ใช้ร่วมกับ -Eใด ๆ -o สวิตช์เข้าใจเพื่อระบุ
ไฟล์เอาต์พุตการพึ่งพา แต่ถ้าใช้โดยไม่มี -Eแต่ละคน -o เป็นที่เข้าใจว่าจะระบุ a
ไฟล์วัตถุเป้าหมาย

ตั้งแต่ -E ไม่ได้หมายความถึง -MD สามารถใช้เพื่อสร้างไฟล์เอาต์พุตการพึ่งพาเป็นa
ผลข้างเคียงของกระบวนการคอมไพล์

-MMD
ชอบ -MD ยกเว้นเฉพาะไฟล์ส่วนหัวของผู้ใช้เท่านั้น ไม่ใช่ไฟล์ส่วนหัวของระบบ

-x c
-x C ++
-x วัตถุประสงค์-c
-x แอสเซมเบลอร์-กับ-cpp
ระบุภาษาต้นทาง: C, C++, Objective-C หรือแอสเซมบลี นี้ไม่มีอะไรจะทำ
ด้วยความสอดคล้องมาตรฐานหรือการขยาย; มันแค่เลือกว่าไวยากรณ์พื้นฐานใดที่จะ
คาดหวัง. หากคุณไม่ได้ให้ตัวเลือกเหล่านี้เลย cpp จะอนุมานภาษาจาก
นามสกุลของไฟล์ต้นฉบับ: .c, ซีซี., .m,หรือ .S. ส่วนขยายทั่วไปอื่นๆ สำหรับ
C ++ และแอสเซมบลีก็รู้จักเช่นกัน ถ้า cpp ไม่รู้จักนามสกุล มัน
จะถือว่าไฟล์เป็น C; นี่เป็นโหมดทั่วไปที่สุด

บันทึก: cpp เวอร์ชันก่อนหน้ายอมรับ a -lang ตัวเลือกที่เลือกทั้ง
ภาษาและระดับความสอดคล้องของมาตรฐาน ตัวเลือกนี้ถูกลบเพราะ
มันขัดแย้งกับ -l ตัวเลือก

-std=มาตรฐาน
-ansi
ระบุมาตรฐานที่รหัสควรสอดคล้อง ปัจจุบัน CPP รู้เรื่อง C
และมาตรฐาน C++; คนอื่น ๆ อาจถูกเพิ่มในอนาคต

มาตรฐาน อาจเป็นหนึ่งใน:

"ซี90"
"ซี89"
"iso9899:1990"
มาตรฐาน ISO C ตั้งแต่ปี 1990 c90 เป็นชวเลขจารีตประเพณีสำหรับเวอร์ชันนี้ของ
มาตรฐาน.

พื้นที่ปลูก -ansi ตัวเลือกเทียบเท่ากับ -std=c90.

"iso9899:199409"
มาตรฐาน 1990 C ซึ่งแก้ไขเพิ่มเติมในปี 1994

"iso9899:1999"
"ซี99"
"iso9899:199x"
"ซี9เอ็กซ์"
มาตรฐาน ISO C ฉบับปรับปรุง เผยแพร่เมื่อเดือนธันวาคม พ.ศ. 1999 ก่อนเผยแพร่นี้
เป็นที่รู้จักในนาม C9X

"iso9899:2011"
"ซี11"
"ซี1เอ็กซ์"
มาตรฐาน ISO C ฉบับปรับปรุง เผยแพร่เมื่อเดือนธันวาคม พ.ศ. 2011 ก่อนเผยแพร่นี้
เป็นที่รู้จักในนาม C1X

"กนู90"
"กนู89"
มาตรฐาน 1990 C บวกกับส่วนขยาย GNU นี่คือค่าเริ่มต้น

"กนู99"
"กนู9x"
มาตรฐาน 1999 C บวกกับส่วนขยาย GNU

"กนู11"
"กนู1x"
มาตรฐาน 2011 C บวกกับส่วนขยาย GNU

"c++98"
มาตรฐาน ISO C++ ปี 1998 พร้อมการแก้ไขเพิ่มเติม

"กนู++98"
เหมือนกับ -std=c++98 บวกกับส่วนขยาย GNU นี่เป็นค่าเริ่มต้นสำหรับโค้ด C++

-ผม- แยกเส้นทางรวม ไดเร็กทอรีใด ๆ ที่ระบุด้วย -I ตัวเลือกมาก่อน -ผม- เป็น
ค้นหาเฉพาะส่วนหัวที่ขอด้วย "#include "ไฟล์""; พวกเขาจะไม่ถูกค้นหา
"#รวมไฟล์>". หากระบุไดเร็กทอรีเพิ่มเติมด้วย -I ตัวเลือกหลัง
-ผม-, ไดเรกทอรีเหล่านั้นจะถูกค้นหาทั้งหมด #include แนวทาง

นอกจากนี้ -ผม- ยับยั้งการใช้ไดเร็กทอรีของไดเร็กทอรีไฟล์ปัจจุบันเป็น
ไดเร็กทอรีการค้นหาแรกสำหรับ "#include "ไฟล์"".

ตัวเลือกนี้เลิกใช้แล้ว

-nostdinc
อย่าค้นหาไดเรกทอรีระบบมาตรฐานสำหรับไฟล์ส่วนหัว เฉพาะไดเรกทอรี
คุณได้ระบุด้วย -I ตัวเลือก (และไดเร็กทอรีของไฟล์ปัจจุบัน if
เหมาะสม) ถูกค้น

-nostdinc++
อย่าค้นหาไฟล์ส่วนหัวในไดเร็กทอรีมาตรฐานเฉพาะ C ++ แต่ยังทำอยู่
ค้นหาไดเร็กทอรีมาตรฐานอื่นๆ (ตัวเลือกนี้ใช้ในการสร้าง C++
ห้องสมุด.)

- รวม ไฟล์
กระบวนการ ไฟล์ ราวกับว่า "#include "file" ปรากฏเป็นบรรทัดแรกของแหล่งที่มาหลัก
ไฟล์. อย่างไรก็ตาม ไดเร็กทอรีแรกที่ค้นหา ไฟล์ คือการทำงานของพรีโปรเซสเซอร์
ไดเรกทอรี แทน of ไดเร็กทอรีที่มีไฟล์ต้นฉบับหลัก หากไม่พบ
มีการค้นหาในส่วนที่เหลือของสายการค้นหา "#include "..."" เช่น
ปกติ

ถ้าหลาย - รวม มีตัวเลือกให้ ไฟล์จะรวมอยู่ในลำดับที่พวกเขา
ปรากฏในบรรทัดคำสั่ง

-imacros ไฟล์
ชอบๆ - รวมยกเว้นว่าผลลัพธ์ใด ๆ ที่สร้างโดยการสแกน ไฟล์ ถูกโยนทิ้ง
ห่างออกไป. มาโครที่กำหนดยังคงกำหนดไว้ ซึ่งจะทำให้คุณได้รับมาโครทั้งหมด
จากส่วนหัวโดยไม่ประมวลผลการประกาศด้วย

ไฟล์ทั้งหมดที่ระบุโดย -imacros จะถูกประมวลผลก่อนไฟล์ทั้งหมดที่ระบุโดย - รวม.

-idirafter dir
ค้นหา dir สำหรับไฟล์ส่วนหัว แต่ทำอย่างนั้น หลังจาก ไดเร็กทอรีทั้งหมดที่ระบุด้วย -I และ
ไดเร็กทอรีระบบมาตรฐานหมดแล้ว dir ถือเป็นระบบ ได้แก่
ไดเร็กทอรี ถ้า dir เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วย sysroot
คำนำหน้า; ดู --sysroot และ -isysroot.

-iprefix อุปสรรค
ระบุ อุปสรรค เป็นคำนำหน้าต่อไป -iwithprefix ตัวเลือก. หากคำนำหน้า
แทนไดเร็กทอรี คุณควรรวมสุดท้าย /.

-iwithprefix dir
-iwithprefixbefore dir
ผนวก dir ไปยังคำนำหน้าที่ระบุก่อนหน้านี้ด้วย -iprefixและเพิ่มผลลัพธ์
ไดเรกทอรีไปยังเส้นทางการค้นหารวม -iwithprefixbefore วางไว้ที่เดียวกัน -I
จะ; -iwithprefix วางไว้ที่ไหน -idirafter หากว่า

-isysroot dir
ตัวเลือกนี้เหมือนกับ --sysroot ตัวเลือก แต่ใช้กับไฟล์ส่วนหัวเท่านั้น (ยกเว้นสำหรับ
เป้าหมายของดาร์วิน ซึ่งใช้กับทั้งไฟล์ส่วนหัวและไลบรารี) ดู
--sysroot ตัวเลือกสำหรับข้อมูลเพิ่มเติม

-imultilib dir
ใช้ dir เป็นไดเร็กทอรีย่อยของไดเร็กทอรีที่มีส่วนหัว C++ เฉพาะเป้าหมาย

-isystem dir
ค้นหา dir สำหรับไฟล์ส่วนหัวหลังจากไดเร็กทอรีทั้งหมดที่ระบุโดย -I แต่ก่อนที่
ไดเร็กทอรีระบบมาตรฐาน ทำเครื่องหมายว่าเป็นไดเร็กทอรีระบบ เพื่อให้ไดเร็กทอรีเหมือนกัน
การดูแลเป็นพิเศษตามที่ใช้กับไดเร็กทอรีระบบมาตรฐาน

If dir เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วยคำนำหน้า sysroot ดู
--sysroot และ -isysroot.

-iquote dir
ค้นหา dir สำหรับไฟล์ส่วนหัวที่ขอด้วย "#include "ไฟล์""; พวกเขาจะไม่
ค้นหา "#includeไฟล์>"ก่อนไดเร็กทอรีทั้งหมดที่ระบุโดย -I และก่อนที่จะ
ไดเร็กทอรีระบบมาตรฐาน

If dir เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วยคำนำหน้า sysroot ดู
--sysroot และ -isysroot.

-fdirectives-only
เมื่อประมวลผลล่วงหน้า ให้จัดการคำสั่ง แต่อย่าขยายมาโคร

พฤติกรรมของตัวเลือกขึ้นอยู่กับ -E และ -fpreprocessed ตัวเลือก

กับ -Eการประมวลผลล่วงหน้าจำกัดเฉพาะการจัดการคำสั่งเช่น "#define"
"#ifdef" และ "#ข้อผิดพลาด" การทำงานของตัวประมวลผลล่วงหน้าอื่นๆ เช่น การขยายมาโครและ
ไม่ได้ทำการแปลงไตรกราฟ นอกจากนี้ -dD ตัวเลือกโดยปริยาย
เปิดการใช้งาน

กับ -fpreprocessed, คำจำกัดความของบรรทัดคำสั่งและมาโครในตัวส่วนใหญ่คือ
พิการ. มาโครเช่น "__LINE__" ซึ่งขึ้นอยู่กับบริบทจะได้รับการจัดการ
โดยทั่วไป. ซึ่งช่วยให้สามารถรวบรวมไฟล์ที่ประมวลผลไว้ล่วงหน้าด้วย "-E
-fdirectives เท่านั้น".

พร้อมทั้ง -E และ -fpreprocessedกฎสำหรับ -fpreprocessed มีความสำคัญ นี้
เปิดใช้งานการประมวลผลล่วงหน้าของไฟล์ที่ประมวลผลก่อนหน้านี้ด้วย "-E
-fdirectives เท่านั้น".

-fdollars-in-identifiers
ยอมรับ $ ในตัวระบุ

-fexttended-ตัวระบุ
ยอมรับชื่ออักขระสากลในตัวระบุ ตัวเลือกนี้เปิดใช้งานโดยค่าเริ่มต้น
สำหรับ C99 (และเวอร์ชันมาตรฐาน C ที่ใหม่กว่า) และ C++

-fno-canonical-system-headers
เมื่อประมวลผลล่วงหน้า อย่าย่อพาธส่วนหัวของระบบด้วยการกำหนดรูปแบบบัญญัติ

-fpreprocessed
ระบุตัวประมวลผลล่วงหน้าว่าไฟล์อินพุตได้รับการประมวลผลล่วงหน้าแล้ว นี้
ยับยั้งสิ่งต่างๆ เช่น การขยายมาโคร การแปลง Trigraph เลี่ยงการต่อบรรทัดใหม่
และการประมวลผลคำสั่งส่วนใหญ่ ตัวประมวลผลล่วงหน้ายังคงรับรู้และลบออก
ความคิดเห็นเพื่อให้คุณสามารถส่งไฟล์ที่ประมวลผลล่วงหน้าด้วย -C ไปยังคอมไพเลอร์โดยไม่ต้อง
ปัญหา. ในโหมดนี้ ตัวประมวลผลล่วงหน้าที่รวมไว้เป็นมากกว่าตัวสร้างโทเค็น
สำหรับปลายด้านหน้า

-fpreprocessed เป็นนัยถ้าไฟล์อินพุตมีนามสกุลใดนามสกุลหนึ่ง .i, .ii or .mi.
นี่คือส่วนขยายที่ GCC ใช้สำหรับไฟล์ที่ประมวลผลล่วงหน้าที่สร้างโดย -save-temps.

-ftabstop=ความกว้าง
กำหนดระยะห่างระหว่างแถบหยุด ซึ่งช่วยให้ตัวประมวลผลล่วงหน้ารายงานคอลัมน์ที่ถูกต้อง
ตัวเลขในคำเตือนหรือข้อผิดพลาด แม้ว่าแท็บจะปรากฏบนบรรทัด ถ้าค่าน้อยกว่า
มากกว่า 1 หรือมากกว่า 100 ตัวเลือกจะถูกละเว้น ค่าเริ่มต้นคือ 8

-fdebug-cpp
ตัวเลือกนี้มีประโยชน์สำหรับการดีบัก GCC เท่านั้น เมื่อใช้กับ -E, ทิ้งการดีบัก
ข้อมูลเกี่ยวกับแผนที่ที่ตั้ง ทุกโทเค็นในเอาต์พุตนำหน้าด้วยการถ่ายโอนข้อมูลของ
แผนที่ที่ตั้งของมันเป็นของ การถ่ายโอนข้อมูลแผนที่ที่ถือตำแหน่งของโทเค็น
อยากจะเป็น:

{"ป":เฝอ ;"F":ฟ ;"แอล": ;"ค": ;"NS": ;"NS": ;"อี": ,"สถานที่": }

เมื่อใช้โดยไม่ต้อง -E, ตัวเลือกนี้ไม่มีผล

-ftrack-มาโครขยาย[=ระดับ]
ติดตามตำแหน่งของโทเค็นในการขยายมาโคร สิ่งนี้ทำให้คอมไพเลอร์สามารถปล่อย
การวินิจฉัยเกี่ยวกับสแต็คการขยายมาโครปัจจุบันเมื่อเกิดข้อผิดพลาดในการคอมไพล์ใน
การขยายมาโคร การใช้ตัวเลือกนี้ทำให้พรีโปรเซสเซอร์และคอมไพเลอร์ใช้การ
หน่วยความจำมากขึ้น NS ระดับ พารามิเตอร์สามารถใช้เพื่อเลือกระดับความแม่นยำของโทเค็น
การติดตามตำแหน่งจึงช่วยลดการใช้หน่วยความจำหากจำเป็น ค่า 0 of
ระดับ ปิดใช้งานตัวเลือกนี้เหมือนกับว่าไม่ -ftrack-มาโครขยาย อยู่บน
บรรทัดคำสั่ง ค่า 1 ติดตามตำแหน่งโทเค็นในโหมดที่เสื่อมโทรมเพื่อประโยชน์ของ
ค่าใช้จ่ายหน่วยความจำน้อยที่สุด ในโหมดนี้โทเค็นทั้งหมดที่เกิดจากการขยายตัวของ an
อาร์กิวเมนต์ของแมโครที่เหมือนฟังก์ชันมีตำแหน่งเดียวกัน ค่า 2 โทเค็นแทร็ก
สถานที่อย่างสมบูรณ์ ค่านี้เป็นหน่วยความจำที่หิวมากที่สุด เมื่อให้ตัวเลือกนี้
ไม่มีอาร์กิวเมนต์ ค่าพารามิเตอร์เริ่มต้นคือ 2.

โปรดทราบว่า "-ftrack-macro-expansion=2" ถูกเปิดใช้งานโดยค่าเริ่มต้น

-fexec-charset=ชุดอักขระ
ตั้งค่าชุดอักขระการดำเนินการ ใช้สำหรับค่าคงที่สตริงและอักขระ ค่าเริ่มต้น
คือ UTF-8 ชุดอักขระ สามารถเป็นการเข้ารหัสใด ๆ ที่สนับสนุนโดยไลบรารี "iconv" ของระบบ
กิจวัตรประจำวัน

-fwide-exec-charset=ชุดอักขระ
ตั้งค่าชุดอักขระการดำเนินการแบบกว้าง ใช้สำหรับค่าคงที่สตริงและอักขระแบบกว้าง
ค่าเริ่มต้นคือ UTF-32 หรือ UTF-16 ขึ้นอยู่กับความกว้างของ "wchar_t" เนื่องจาก
กับ -fexec-charset, ชุดอักขระ สามารถเข้ารหัสใด ๆ ที่สนับสนุนโดย "iconv" ของระบบ
กิจวัตรประจำวันของห้องสมุด อย่างไรก็ตาม คุณจะมีปัญหากับการเข้ารหัสที่ไม่เหมาะสม
ตรงใน "wchar_t"

-finput-charset=ชุดอักขระ
ตั้งค่าชุดอักขระอินพุต ใช้สำหรับแปลจากชุดอักขระของอินพุต
ไฟล์ไปยังชุดอักขระต้นทางที่ใช้โดย GCC หากสถานที่ไม่ระบุหรือ GCC
ไม่สามารถรับข้อมูลนี้จากโลแคล ค่าเริ่มต้นคือ UTF-8 นี้สามารถ
แทนที่ด้วยโลแคลหรือตัวเลือกบรรทัดคำสั่งนี้ ปัจจุบันคำสั่ง-
ตัวเลือกบรรทัดมีความสำคัญกว่าหากมีข้อขัดแย้ง ชุดอักขระ สามารถเข้ารหัสใด ๆ ก็ได้
สนับสนุนโดยรูทีนไลบรารี "iconv" ของระบบ

-fworking-ไดเรกทอรี
เปิดใช้งานการสร้าง linemarkers ในเอาต์พุตตัวประมวลผลล่วงหน้าที่จะให้คอมไพเลอร์
ทราบไดเร็กทอรีการทำงานปัจจุบันในขณะที่ประมวลผลล่วงหน้า เมื่อตัวเลือกนี้คือ
เปิดใช้งาน ตัวประมวลผลล่วงหน้าจะปล่อยตัวทำเครื่องหมายเส้นที่สองหลังจากตัวทำเครื่องหมายเริ่มต้น
ด้วยไดเร็กทอรีการทำงานปัจจุบันตามด้วยสแลชสองตัว GCC จะใช้สิ่งนี้
ไดเร็กทอรีเมื่อมีอยู่ในอินพุตที่ประมวลผลล่วงหน้าเนื่องจากไดเร็กทอรีที่ปล่อยออกมาเป็น
ไดเร็กทอรีการทำงานปัจจุบันในรูปแบบข้อมูลการดีบักบางรูปแบบ ตัวเลือกนี้คือ
เปิดใช้งานโดยปริยายหากเปิดใช้งานข้อมูลการดีบัก แต่สิ่งนี้สามารถยับยั้งได้ด้วย
แบบฟอร์มปฏิเสธ -fno-working-ไดเรกทอรี. หาก -P มีแฟล็กอยู่ในคำสั่ง
บรรทัด ตัวเลือกนี้ไม่มีผล เนื่องจากไม่มีคำสั่ง "#line" ออกมาแต่อย่างใด

-fno-show-คอลัมน์
อย่าพิมพ์หมายเลขคอลัมน์ในการวินิจฉัย นี่อาจมีความจำเป็นหากการวินิจฉัยคือ
ถูกสแกนโดยโปรแกรมที่ไม่เข้าใจหมายเลขคอลัมน์ เช่น
dejagnu.

-A คำกริยา=คำตอบ
ยืนยันด้วยภาคแสดง คำกริยา และตอบ คำตอบ. แบบฟอร์มนี้คือ
ชอบแบบเก่ามากกว่า -A คำกริยา(คำตอบ)ซึ่งยังคงรองรับอยู่เพราะว่า
ไม่ใช้อักขระพิเศษของเชลล์

-A -คำกริยา=คำตอบ
ยกเลิกการยืนยันด้วยภาคแสดง คำกริยา และตอบ คำตอบ.

-dCHARS
CHAR เป็นลำดับของอักขระต่อไปนี้ตั้งแต่หนึ่งตัวขึ้นไป และต้องไม่เป็น
นำหน้าด้วยช่องว่าง อักขระอื่น ๆ ถูกตีความโดยคอมไพเลอร์ที่เหมาะสมหรือ
สงวนไว้สำหรับ GCC เวอร์ชันต่อๆ ไป และจะถูกละเว้นอย่างเงียบๆ หากคุณระบุ
อักขระที่มีพฤติกรรมขัดแย้งกัน ผลลัพธ์ไม่ได้กำหนดไว้

M แทนที่จะเป็นเอาต์พุตปกติ ให้สร้างรายการของ #กำหนด คำสั่งสำหรับ .ทั้งหมด
มาโครที่กำหนดไว้ระหว่างการดำเนินการของตัวประมวลผลล่วงหน้า รวมถึงที่กำหนดไว้ล่วงหน้า
มาโคร วิธีนี้จะช่วยให้คุณค้นพบว่ามีอะไรที่กำหนดไว้ล่วงหน้าในเวอร์ชันของคุณ
พรีโปรเซสเซอร์ สมมติว่าคุณไม่มีไฟล์ foo.h, คำสั่ง

แตะ foo.h; cpp -dM foo.h

จะแสดงมาโครที่กำหนดไว้ล่วงหน้าทั้งหมด

ถ้าคุณใช้ -dM ปราศจาก -E ตัวเลือก -dM ถูกตีความว่าเป็นคำพ้องความหมายสำหรับ
-fdump-rtl-mach.

D ชอบ M เว้นแต่ในสองประการ: มันไม่ ไม่ รวมมาโครที่กำหนดไว้ล่วงหน้าและมัน
เอาท์พุท ทั้งสอง #กำหนด คำสั่งและผลลัพธ์ของการประมวลผลล่วงหน้า ทั้งสองแบบ
ของเอาต์พุตไปที่ไฟล์เอาต์พุตมาตรฐาน

N ชอบ Dแต่ให้แสดงเฉพาะชื่อมาโคร ไม่ใช่ส่วนขยาย

I เอาท์พุต #include คำสั่งนอกเหนือจากผลลัพธ์ของการประมวลผลล่วงหน้า

U ชอบ D ยกเว้นเฉพาะมาโครที่ขยายหรือทดสอบความชัดเจน
ในคำสั่งของตัวประมวลผลล่วงหน้าเป็นเอาต์พุต เอาต์พุตล่าช้าจนกว่าจะใช้งานหรือ
การทดสอบมาโคร และ #อันเดฟ คำสั่งยังส่งออกสำหรับมาโครที่ทดสอบแล้ว แต่
ไม่ได้กำหนดไว้ในขณะนั้น

-P ยับยั้งการสร้างเส้นในเอาต์พุตจากตัวประมวลผลล่วงหน้า นี่อาจจะเป็น
มีประโยชน์เมื่อรันตัวประมวลผลล่วงหน้าในสิ่งที่ไม่ใช่รหัส C และจะถูกส่ง
ไปยังโปรแกรมที่อาจสับสนโดยตัวทำเครื่องหมายเส้น

-C อย่าทิ้งความคิดเห็น ความคิดเห็นทั้งหมดจะถูกส่งผ่านไปยังไฟล์ที่ส่งออก ยกเว้น
สำหรับความคิดเห็นในคำสั่งที่ประมวลผลแล้ว ซึ่งจะถูกลบไปพร้อมกับคำสั่งนั้น

คุณควรเตรียมพร้อมสำหรับผลข้างเคียงเมื่อใช้ -C; มันทำให้พรีโปรเซสเซอร์ไป
ถือว่าความคิดเห็นเป็นโทเค็นในสิทธิของตนเอง ตัวอย่างเช่น ความคิดเห็นที่ปรากฏที่
จุดเริ่มต้นของสิ่งที่จะเป็น directive line มีผลกับการเปลี่ยนบรรทัดนั้นให้เป็น an
บรรทัดต้นทางธรรมดา เนื่องจากโทเค็นแรกในบรรทัดไม่มี a . อีกต่อไป #.

- ปชช อย่าละทิ้งความคิดเห็น รวมทั้งระหว่างการขยายมาโคร ประมาณนี้ค่ะ -Cยกเว้น
ความคิดเห็นที่อยู่ภายในแมโครนั้นจะถูกส่งผ่านไปยังไฟล์เอาต์พุตด้วยโดยที่
มาโครถูกขยาย

นอกจากผลข้างเคียงของ -C ตัวเลือก, - ปชช ตัวเลือกทำให้เกิดสไตล์ C ++ ทั้งหมด
ความคิดเห็นภายในมาโครที่จะแปลงเป็นความคิดเห็นแบบ C เพื่อป้องกันภายหลัง
การใช้มาโครนั้นจากการแสดงความคิดเห็นส่วนที่เหลือของบรรทัดต้นทางโดยไม่ตั้งใจ

พื้นที่ปลูก - ปชช โดยทั่วไปจะใช้ตัวเลือกเพื่อสนับสนุนความคิดเห็นที่เป็นผ้าสำลี

-traditional-cpp
พยายามเลียนแบบพฤติกรรมของตัวประมวลผลล่วงหน้า C ที่ล้าสมัย เมื่อเทียบกับ ISO C
พรีโปรเซสเซอร์

-trigraphs
ประมวลผลลำดับไตรกราฟ

-remap
เปิดใช้งานรหัสพิเศษเพื่อแก้ไขระบบไฟล์ที่อนุญาตเฉพาะไฟล์ที่สั้นมากเท่านั้น
ชื่อเช่น MS-DOS

--ช่วยด้วย
--เป้าหมาย-ช่วยเหลือ
พิมพ์ข้อความที่อธิบายตัวเลือกบรรทัดคำสั่งทั้งหมดแทนการประมวลผลล่วงหน้า

-v โหมดละเอียด พิมพ์หมายเลขเวอร์ชันของ GNU CPP ที่จุดเริ่มต้นของการดำเนินการและ
รายงานรูปแบบสุดท้ายของเส้นทางรวม

-H พิมพ์ชื่อของแต่ละไฟล์ส่วนหัวที่ใช้ นอกเหนือจากกิจกรรมปกติอื่นๆ แต่ละ
เยื้องชื่อเพื่อแสดงว่าลึกใน #include กองมันเป็น ส่วนหัวที่คอมไพล์แล้ว
ไฟล์ยังถูกพิมพ์แม้ว่าจะพบว่าไม่ถูกต้อง คอมไพล์ล่วงหน้าที่ไม่ถูกต้อง
ไฟล์ส่วนหัวพิมพ์ด้วย ...NS และถูกต้องด้วย ... ! .

-version
--รุ่น
พิมพ์หมายเลขเวอร์ชันของ GNU CPP ด้วยหนึ่งขีด ให้ดำเนินการประมวลผลล่วงหน้าตามปกติ
ด้วยเส้นประสองเส้น ให้ออกทันที

และพวกเรา


ส่วนนี้อธิบายตัวแปรสภาพแวดล้อมที่ส่งผลต่อวิธีการทำงานของ CPP คุณสามารถ
ใช้เพื่อระบุไดเร็กทอรีหรือคำนำหน้าเพื่อใช้ในการค้นหาไฟล์รวมหรือto
เอาต์พุตการพึ่งพาการควบคุม

โปรดทราบว่าคุณยังสามารถระบุสถานที่ที่จะค้นหาโดยใช้ตัวเลือกเช่น -Iและควบคุม
เอาต์พุตการพึ่งพาพร้อมตัวเลือกเช่น -M. สิ่งเหล่านี้มีความสำคัญเหนือกว่าตัวแปรสภาพแวดล้อม
ซึ่งจะมีความสำคัญเหนือการกำหนดค่าของ GCC

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
ค่าของตัวแปรแต่ละตัวคือรายการของไดเร็กทอรีคั่นด้วยอักขระพิเศษมาก
ชอบ เส้นทางเพื่อค้นหาไฟล์ส่วนหัว ตัวละครพิเศษ,
"PATH_SEPARATOR" ขึ้นอยู่กับเป้าหมายและกำหนดที่เวลาบิลด์ GCC สำหรับ Microsoft
เป้าหมายที่ใช้ Windows คือเครื่องหมายอัฒภาค และสำหรับเป้าหมายอื่นๆ เกือบทั้งหมด จะเป็น
ลำไส้ใหญ่.

CPATH ระบุรายการของไดเร็กทอรีที่จะค้นหาราวกับว่าระบุด้วย -Iแต่
หลังจากเส้นทางใด ๆ ที่กำหนดด้วย -I ตัวเลือกบนบรรทัดคำสั่ง ตัวแปรสภาพแวดล้อมนี้
ใช้โดยไม่คำนึงว่าภาษาใดจะถูกประมวลผลล่วงหน้า

ตัวแปรสภาพแวดล้อมที่เหลือใช้เฉพาะเมื่อประมวลผลล่วงหน้าโดยเฉพาะ
ภาษาที่ระบุ แต่ละรายการระบุรายการของไดเร็กทอรีที่จะค้นหาราวกับว่า
ระบุด้วย -isystemแต่หลังจากเส้นทางใด ๆ ที่ให้ไว้กับ -isystem ตัวเลือกบน
บรรทัดคำสั่ง.

ในตัวแปรทั้งหมดเหล่านี้ องค์ประกอบว่างจะสั่งให้คอมไพเลอร์ค้นหาปัจจุบัน
ไดเรกทอรีการทำงาน องค์ประกอบว่างสามารถปรากฏที่จุดเริ่มต้นหรือจุดสิ้นสุดของเส้นทาง สำหรับ
เช่น ถ้าค่าของ CPATH คือ ":/special/include" ซึ่งมีผลเหมือนกับ
-ผม. -I/พิเศษ/รวม.

DEPENDENCIES_OUTPUT
หากมีการตั้งค่าตัวแปรนี้ ค่าของตัวแปรนี้จะระบุวิธีการแสดงการพึ่งพาสำหรับ Make based
ในไฟล์ส่วนหัวที่ไม่ใช่ระบบที่ประมวลผลโดยคอมไพเลอร์ ไฟล์ส่วนหัวของระบบคือ
ละเว้นในผลลัพธ์การพึ่งพา

คุณค่าของ DEPENDENCIES_OUTPUT สามารถเป็นเพียงชื่อไฟล์ได้ ซึ่งในกรณีนี้ Make rule
ถูกเขียนไปยังไฟล์นั้น โดยเดาชื่อเป้าหมายจากชื่อไฟล์ต้นทาง หรือ
ค่าสามารถมีรูปแบบ ไฟล์ เป้าซึ่งในกรณีนี้กฎจะถูกเขียนไปยัง file ไฟล์
การใช้ เป้า เป็นชื่อเป้าหมาย

กล่าวอีกนัยหนึ่งตัวแปรสภาพแวดล้อมนี้เทียบเท่ากับการรวมตัวเลือก -MM
และ -MF, พร้อมตัวเลือก -MT สลับกันด้วย

SUNPRO_DEPENDENCIES
ตัวแปรนี้เหมือนกับ DEPENDENCIES_OUTPUT (ดูด้านบน) ยกเว้นระบบนั้น
ไฟล์ส่วนหัวจะไม่ถูกละเลย ดังนั้นจึงหมายความว่า -M มากกว่า -MM. อย่างไรก็ตาม
ละเว้นการพึ่งพาไฟล์อินพุตหลัก

ใช้ mipsel-linux-gnu-cpp ออนไลน์โดยใช้บริการ onworks.net


Ad


Ad

โปรแกรมออนไลน์ Linux และ Windows ล่าสุด