นี่คือคำสั่ง aarch64-linux-gnu-cpp-4.8 ที่สามารถทำงานในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
cpp - ตัวประมวลผลล่วงหน้า C
เรื่องย่อ
ซีพีพี [-Dแมโคร[=ป้องกัน--Uแมโคร]
[-Idir... ] [-iquotedir... ]
[-Wเตือน... ]
[-M|-มม] [-มก] [-มฟล ชื่อไฟล์]
[-ส.ส] [-เอ็มคิว เป้า... ]
[-มท เป้า... ]
[-P] [-fno-working-ไดเรกทอรี]
[-x language] [-std=มาตรฐาน]
แฟ้ม ออกจากไฟล์
เฉพาะตัวเลือกที่มีประโยชน์ที่สุดเท่านั้นที่แสดงไว้ที่นี่ ดูด้านล่างสำหรับส่วนที่เหลือ
DESCRIPTION
ตัวประมวลผลล่วงหน้า C มักรู้จักกันในชื่อ ซีพีเป็น แมโคร หน่วยประมวลผล ที่ใช้โดยอัตโนมัติโดย
คอมไพเลอร์ C เพื่อแปลงโปรแกรมของคุณก่อนการคอมไพล์ เรียกว่ามาโคร
โปรเซสเซอร์เพราะมันช่วยให้คุณกำหนด แมโครซึ่งเป็นตัวย่อสั้นๆ อีกต่อไป
โครงสร้าง
ตัวประมวลผลล่วงหน้า C มีวัตถุประสงค์เพื่อใช้กับซอร์สโค้ด C, C++ และ Objective-C เท่านั้น
ในอดีตมันถูกใช้ในทางที่ผิดในฐานะโปรแกรมประมวลผลข้อความทั่วไป มันจะสำลักในการป้อนข้อมูลซึ่ง
ไม่เชื่อฟังกฎเกณฑ์ของ C ตัวอย่างเช่น อะพอสทรอฟีจะถูกตีความว่าเป็น
จุดเริ่มต้นของค่าคงที่อักขระ และทำให้เกิดข้อผิดพลาด ยังพึ่งพาไม่ได้
รักษาลักษณะของอินพุตซึ่งไม่สำคัญต่อภาษาตระกูล C
หาก Makefile ถูกประมวลผลล่วงหน้า ฮาร์ดแท็บทั้งหมดจะถูกลบออก และ Makefile จะ
ไม่ทำงาน
ต้องบอกว่าคุณมักจะเลิกใช้ cpp กับสิ่งที่ไม่ใช่ C. อื่นๆ
ภาษาโปรแกรม Algol-ish มักจะปลอดภัย (Pascal, Ada เป็นต้น) เช่นเดียวกับการประกอบกับ
คำเตือน. -แบบดั้งเดิม-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 ต้องการชื่อไฟล์สองชื่อเป็นอาร์กิวเมนต์ แฟ้ม และ ออกจากไฟล์.
ตัวประมวลผลล่วงหน้าอ่าน แฟ้ม ร่วมกับไฟล์อื่นๆ ที่ระบุด้วย #include. ทั้งหมด
เอาต์พุตที่สร้างโดยไฟล์อินพุตที่รวมกันจะถูกเขียนใน ออกจากไฟล์.
แต่ละ แฟ้ม or ออกจากไฟล์ อาจจะ -ซึ่งเป็น แฟ้ม หมายถึงการอ่านจากอินพุตมาตรฐานและ
as ออกจากไฟล์ หมายถึงการเขียนไปยังเอาต์พุตมาตรฐาน นอกจากนี้ หากละไฟล์ใดไฟล์หนึ่งออกไป หมายความว่า
เหมือนกับถ้า - ระบุไว้สำหรับไฟล์นั้น
เว้นแต่จะระบุไว้เป็นอย่างอื่น หรือตัวเลือกลงท้ายด้วย =, ตัวเลือกทั้งหมดที่มีอาร์กิวเมนต์อาจ
ให้อาร์กิวเมนต์นั้นปรากฏขึ้นทันทีหลังตัวเลือกหรือเว้นวรรคระหว่าง
ตัวเลือกและอาร์กิวเมนต์: -ไอฟู และ -I foo มีผลเช่นเดียวกัน
หลายตัวเลือกมีชื่อหลายตัวอักษร ดังนั้นตัวเลือกตัวอักษรเดี่ยวหลายตัวอาจ ไม่ be
จัดกลุ่ม: -ดีเอ็ม แตกต่างจาก -d -M.
-D ชื่อ
กำหนดล่วงหน้า ชื่อ เป็นมาโครที่มีคำจำกัดความ 1
-D ชื่อ=คำนิยาม
เนื้อหาของ คำนิยาม ถูก tokenized และประมวลผลราวกับว่ามันปรากฏขึ้นระหว่าง
การแปลขั้นตอนที่สามในa #กำหนด คำสั่ง โดยเฉพาะคำนิยามจะเป็น
ตัดทอนด้วยอักขระขึ้นบรรทัดใหม่แบบฝัง
หากคุณกำลังเรียกใช้ตัวประมวลผลล่วงหน้าจากเชลล์หรือโปรแกรมที่คล้ายเชลล์ คุณอาจต้อง
เพื่อใช้ไวยากรณ์การอ้างอิงของเชลล์เพื่อปกป้องอักขระเช่นช่องว่างที่มี
ความหมายในไวยากรณ์ของเชลล์
หากคุณต้องการกำหนดมาโครที่เหมือนฟังก์ชันบนบรรทัดคำสั่ง ให้เขียนอาร์กิวเมนต์ของมัน
รายการที่มีวงเล็บล้อมรอบก่อนเครื่องหมายเท่ากับ (ถ้ามี) วงเล็บคือ
มีความหมายกับเชลล์ส่วนใหญ่ ดังนั้น คุณจะต้องอ้างอิงตัวเลือก กับ sh และ csh,
-NS'ชื่อ(อาร์กิว...)=คำนิยาม' โรงงาน
-D และ -U ตัวเลือกจะได้รับการประมวลผลตามลำดับที่ได้รับบนบรรทัดคำสั่ง ทั้งหมด
-ไอมาครอส ไฟล์ และ - รวม ไฟล์ ตัวเลือกจะถูกประมวลผลหลังจากทั้งหมด -D และ -U ตัวเลือก
-U ชื่อ
ยกเลิกคำจำกัดความก่อนหน้าของ ชื่อสร้างขึ้นในหรือจัดให้มี -D ตัวเลือก
-Undef
อย่ากำหนดมาโครเฉพาะระบบหรือเฉพาะ GCC ไว้ล่วงหน้า มาตรฐานที่กำหนดไว้ล่วงหน้า
มาโครยังคงกำหนดไว้
-I dir
เพิ่มไดเร็กทอรี dir ไปที่รายการไดเร็กทอรีที่จะค้นหาไฟล์ส่วนหัว
ไดเร็กทอรีที่ชื่อ -I จะถูกค้นหาก่อนที่ระบบมาตรฐานจะรวมไดเร็กทอรี
ถ้าไดเร็กทอรี dir เป็นระบบมาตรฐานรวมถึงไดเร็กทอรีตัวเลือกจะถูกละเว้นไปยัง
ตรวจสอบให้แน่ใจว่าลำดับการค้นหาเริ่มต้นสำหรับไดเร็กทอรีระบบและการปฏิบัติพิเศษ
ของส่วนหัวของระบบไม่แพ้ ถ้า dir ขึ้นต้นด้วย "=" จากนั้น "=" จะเป็น
แทนที่ด้วยคำนำหน้า sysroot; ดู --sysroot และ -isysroot.
-o ไฟล์
เขียนเอาต์พุตไปที่ ไฟล์. นี้เหมือนกับการระบุ ไฟล์ เป็นทางเลือกที่สอง
อาร์กิวเมนต์ถึง ซีพี. gcc มีการตีความที่แตกต่างกันของอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกที่สอง
ดังนั้นคุณต้องใช้ -o เพื่อระบุไฟล์ที่ส่งออก
-ผนัง
เปิดคำเตือนทางเลือกทั้งหมดที่ต้องการสำหรับรหัสปกติ ปัจจุบันนี้
is -ความคิดเห็น, -Wtrigraphs, -Wmulticar และคำเตือนเรื่องการเลื่อนจำนวนเต็มทำให้เกิด a
เปลี่ยนเครื่องหมายในนิพจน์ "#if" โปรดทราบว่าคำเตือนของตัวประมวลผลล่วงหน้าจำนวนมาก
จะเปิดไว้โดยค่าเริ่มต้นและไม่มีตัวเลือกให้ควบคุม
-ความคิดเห็น
-ความคิดเห็น
เตือนเมื่อใดก็ตามที่ความคิดเห็นเริ่มต้นลำดับ /* ปรากฏใน a /* แสดงความคิดเห็นหรือเมื่อใดก็ตามที่
แบ็กสแลช-ขึ้นบรรทัดใหม่ปรากฏใน a // ความคิดเห็น (ทั้งสองรูปแบบมีผลเหมือนกัน)
-Wtrigraphs
ไตรกราฟส่วนใหญ่ในความคิดเห็นไม่สามารถส่งผลต่อความหมายของโปรแกรมได้ อย่างไรก็ตาม a
ไตรกราฟที่จะขึ้นบรรทัดใหม่หนี (- ที่ท้ายบรรทัด) สามารถ, โดย
เปลี่ยนตำแหน่งที่ความคิดเห็นเริ่มต้นหรือสิ้นสุด ดังนั้น เฉพาะตรีโกณมิติที่จะเกิด
การขึ้นบรรทัดใหม่ทำให้เกิดคำเตือนภายในความคิดเห็น
ตัวเลือกนี้มีความหมายโดย -ผนัง. ถ้า -ผนัง ไม่ได้รับ ตัวเลือกนี้ยังคงเปิดใช้งานอยู่
เว้นแต่จะเปิดใช้งาน trigraphs หากต้องการรับการแปลงไตรกราฟโดยไม่มีการเตือน แต่รับ
อื่น ๆ -ผนัง คำเตือน ใช้ -ไตรกราฟ -ผนัง -Wno-ไตรกราฟ.
-แบบดั้งเดิม
เตือนเกี่ยวกับโครงสร้างบางอย่างที่ทำงานแตกต่างกันในแบบดั้งเดิมและ ISO C นอกจากนี้
เตือนเกี่ยวกับโครงสร้าง ISO C ที่ไม่มี C เทียบเท่าแบบดั้งเดิมและมีปัญหา
โครงสร้างที่ควรหลีกเลี่ยง
-วันเดฟ
เตือนเมื่อใดก็ตามที่พบตัวระบุที่ไม่ใช่แมโครในan #ถ้า สั่ง
ด้านนอกของ กำหนด. ตัวระบุดังกล่าวจะถูกแทนที่ด้วยศูนย์
-Wunused-มาโคร
เตือนเกี่ยวกับแมโครที่กำหนดไว้ในไฟล์หลักที่ไม่ได้ใช้ มาโครคือ มือสอง ถ้ามันเป็น
ขยายหรือทดสอบการดำรงอยู่อย่างน้อยหนึ่งครั้ง ตัวประมวลผลล่วงหน้าจะเตือนด้วยถ้า
ไม่ได้ใช้มาโครในขณะที่มีการกำหนดใหม่หรือไม่ได้กำหนดไว้
มาโครในตัว มาโครที่กำหนดไว้ในบรรทัดคำสั่ง และมาโครที่กำหนดไว้ใน include
ไฟล์ไม่ได้รับการเตือนเกี่ยวกับ
หมายเหตุ หากใช้มาโครจริง แต่ใช้ในบล็อกตามเงื่อนไขที่ข้ามเท่านั้น
CPP จะแจ้งว่าไม่ได้ใช้ เพื่อหลีกเลี่ยงคำเตือนในกรณีนี้ คุณอาจปรับปรุง
ขอบเขตของคำจำกัดความของมาโคร ตัวอย่างเช่น ย้ายไปยังส่วนที่ข้ามไปครั้งแรก
บล็อก. อีกทางหนึ่ง คุณสามารถใช้หุ่นจำลองกับสิ่งต่อไปนี้:
#ถ้ากำหนด the_macro_causing_the_warning
#เอนดิฟ
-Wendif-ป้ายกำกับ
เตือนเมื่อใดก็ตามที่ an #อื่น หรือ #เอนดิฟ ตามด้วยข้อความ ซึ่งมักจะเกิดขึ้นใน
รหัสของแบบฟอร์ม
#ถ้า FOO
...
#อื่น FOO
...
#เอนดิฟ FOO
"FOO" ตัวที่สองและสามควรอยู่ในความคิดเห็น แต่มักไม่อยู่ในโปรแกรมรุ่นเก่า
คำเตือนนี้เปิดอยู่โดยค่าเริ่มต้น
- ผิดพลาด
ทำให้คำเตือนทั้งหมดเป็นข้อผิดพลาดยาก ซอร์สโค้ดที่ทริกเกอร์คำเตือนจะเป็น
ปฏิเสธ
-Wsystem-ส่วนหัว
ออกคำเตือนสำหรับรหัสในส่วนหัวของระบบ สิ่งเหล่านี้มักไม่ช่วยในการค้นหา
ข้อบกพร่องในรหัสของคุณจึงถูกระงับ หากคุณเป็นผู้รับผิดชอบระบบ
ห้องสมุดคุณอาจต้องการเห็นพวกเขา
-w ระงับคำเตือนทั้งหมด รวมถึงคำเตือนที่ GNU CPP ออกโดยค่าเริ่มต้น
-อวดดี
ออกการวินิจฉัยบังคับทั้งหมดที่ระบุไว้ในมาตรฐาน C เหลือบ้างแล้ว
ออกโดยค่าเริ่มต้น เนื่องจากมักเรียกใช้โค้ดที่ไม่เป็นอันตราย
-pedantic-ข้อผิดพลาด
ออกการวินิจฉัยที่จำเป็นทั้งหมด และทำให้การวินิจฉัยที่จำเป็นทั้งหมดกลายเป็นข้อผิดพลาด
ซึ่งรวมถึงการวินิจฉัยบังคับที่ GCC ออกโดยไม่มี -อวดดี แต่ถือว่า
คำเตือน
-M แทนที่จะส่งออกผลลัพธ์ของการประมวลผลล่วงหน้า ให้ส่งออกกฎที่เหมาะสมสำหรับ ทำ
อธิบายการขึ้นต่อกันของไฟล์ต้นฉบับหลัก ตัวประมวลผลล่วงหน้าส่งออกหนึ่ง
ทำ กฎที่มีชื่อไฟล์อ็อบเจ็กต์สำหรับไฟล์ต้นทาง ทวิภาค และชื่อ
ของไฟล์ที่รวมไว้ทั้งหมด รวมทั้งไฟล์ที่มาจาก - รวม or -ไอมาครอส คำสั่ง
ตัวเลือกบรรทัด
เว้นแต่ระบุไว้อย่างชัดเจน (ด้วย -มท or -เอ็มคิว) ชื่อไฟล์อ็อบเจ็กต์ประกอบด้วย
ชื่อของไฟล์ต้นฉบับที่มีส่วนต่อท้ายใดๆ แทนที่ด้วยส่วนต่อท้ายของไฟล์อ็อบเจ็กต์และด้วย any
นำส่วนไดเร็กทอรีชั้นนำออก หากมีไฟล์รวมอยู่หลายไฟล์ กฎก็คือ
แบ่งออกเป็นหลายบรรทัดโดยใช้ \-ขึ้นบรรทัดใหม่ กฎไม่มีคำสั่ง
ตัวเลือกนี้จะไม่ระงับเอาต์พุตการดีบักของตัวประมวลผลล่วงหน้า เช่น -ดีเอ็ม. หลีกเลี่ยง
การผสมเอาต์พุตการดีบักดังกล่าวกับกฎการพึ่งพา คุณควรระบุ . อย่างชัดเจน
ไฟล์เอาต์พุตการพึ่งพาด้วย -มฟลหรือใช้ตัวแปรสภาพแวดล้อมเช่น
การพึ่งพาอาศัยกัน_OUTPUT. เอาต์พุตการดีบักจะยังคงถูกส่งไปยังสตรีมเอาต์พุตปกติเป็น
ปกติ
ที่ผ่านไป -M แก่คนขับ หมายความถึง -Eและระงับคำเตือนโดยปริยาย -w.
-มม Like -M แต่อย่าพูดถึงไฟล์ส่วนหัวที่พบในไดเร็กทอรีส่วนหัวของระบบ
หรือไฟล์ส่วนหัวที่รวมโดยตรงหรือโดยอ้อมจากส่วนหัวดังกล่าว
นี่หมายความว่าการเลือกวงเล็บมุมหรือเครื่องหมายคำพูดคู่ใน #include
คำสั่งไม่ได้กำหนดว่าส่วนหัวนั้นจะปรากฏใน -มม
เอาต์พุตการพึ่งพา นี่เป็นการเปลี่ยนแปลงเล็กน้อยในความหมายจาก GCC เวอร์ชัน 3.0 และ
ก่อน
-มฟล ไฟล์
เมื่อใช้กับ -M or -มมระบุไฟล์ที่จะเขียนการพึ่งพา ถ้าไม่ -มฟล
สวิตช์จะได้รับตัวประมวลผลล่วงหน้าส่งกฎไปยังที่เดียวกับที่มันจะส่ง
เอาต์พุตที่ประมวลผลล่วงหน้า
เมื่อใช้ร่วมกับตัวเลือกไดรเวอร์ -นพ or -MMD, -มฟล แทนที่การพึ่งพาเริ่มต้น
ไฟล์ที่ส่งออก
-มก ร่วมกับตัวเลือกเช่น -M ขอสร้างการพึ่งพา -มก ถือว่า
ไฟล์ส่วนหัวที่หายไปจะถูกสร้างไฟล์และเพิ่มลงในรายการการพึ่งพาโดยไม่ต้อง
ทำให้เกิดข้อผิดพลาด ชื่อไฟล์การพึ่งพานั้นนำมาโดยตรงจาก "#include"
คำสั่งโดยไม่ต้องเติมเส้นทางใด ๆ -มก ยังระงับเอาต์พุตที่ประมวลผลล่วงหน้าเป็น a
ไฟล์ส่วนหัวที่ขาดหายไปทำให้สิ่งนี้ไม่มีประโยชน์
คุณลักษณะนี้ใช้ในการอัพเดต makefiles โดยอัตโนมัติ
-ส.ส ตัวเลือกนี้แนะนำให้ CPP เพิ่มเป้าหมายปลอมสำหรับการพึ่งพาแต่ละรายการนอกเหนือจาก
ไฟล์หลักทำให้แต่ละไฟล์ไม่ต้องพึ่งพาอะไร กฎจำลองเหล่านี้หลีกเลี่ยงข้อผิดพลาด
ทำ ให้ถ้าคุณลบไฟล์ส่วนหัวโดยไม่ต้องอัปเดต Makefile เพื่อให้ตรงกับ.
นี่คือผลลัพธ์ทั่วไป:
test.o: test.c ทดสอบ h
ทดสอบ h:
-มท เป้า
เปลี่ยนเป้าหมายของกฎที่ปล่อยออกมาจากการสร้างการพึ่งพา โดยค่าเริ่มต้น CPP จะใช้เวลา
ชื่อของไฟล์อินพุตหลัก ลบส่วนประกอบไดเร็กทอรีและส่วนต่อท้ายไฟล์ใดๆ
เช่น .cและผนวกส่วนต่อท้ายอ็อบเจ็กต์ปกติของแพลตฟอร์ม ผลที่ได้คือเป้าหมาย
An -มท option จะกำหนดเป้าหมายให้เป็นสตริงที่คุณระบุ ถ้าคุณต้องการ
หลายเป้าหมาย คุณสามารถระบุให้เป็นอาร์กิวเมนต์เดียวได้ -มทหรือใช้หลายตัว
-มท ตัวเลือก
ตัวอย่างเช่น -มท '$(objpfx)foo.o' อาจให้
$(objpfx)foo.o: foo.c
-เอ็มคิว เป้า
เหมือนกับ -มทแต่จะอ้างอิงถึงอักขระใดๆ ที่มีลักษณะพิเศษเฉพาะสำหรับ Make
-เอ็มคิว '$(objpfx)foo.o' จะช่วยให้
$$(objpfx)foo.o: foo.c
เป้าหมายเริ่มต้นจะได้รับการเสนอราคาโดยอัตโนมัติ ราวกับว่าได้รับด้วย -เอ็มคิว.
-นพ -นพ เทียบเท่ากับ -M -มฟล ไฟล์ยกเว้นว่า -E ไม่ได้หมายความถึง คนขับ
แน่นอน ไฟล์ ขึ้นอยู่กับว่า an -o มีตัวเลือกให้ หากใช่ ไดรเวอร์จะใช้
อาร์กิวเมนต์ แต่มีคำต่อท้ายของ .dมิฉะนั้นจะใช้ชื่อของไฟล์อินพุต
ลบส่วนประกอบไดเร็กทอรีและคำต่อท้าย และใช้a .d วิภัตติ
If -นพ ใช้ร่วมกับ -Eใด ๆ -o สวิตช์เข้าใจเพื่อระบุ
ไฟล์เอาต์พุตการพึ่งพา แต่ถ้าใช้โดยไม่มี -Eแต่ละคน -o เป็นที่เข้าใจว่าจะระบุ a
ไฟล์วัตถุเป้าหมาย
ตั้งแต่ -E ไม่ได้หมายความถึง -นพ สามารถใช้เพื่อสร้างไฟล์เอาต์พุตการพึ่งพาเป็นa
ผลข้างเคียงของกระบวนการคอมไพล์
-MMD
Like -นพ ยกเว้นเฉพาะไฟล์ส่วนหัวของผู้ใช้เท่านั้น ไม่ใช่ไฟล์ส่วนหัวของระบบ
-x c
-x C ++
-x วัตถุประสงค์-c
-x แอสเซมเบลอร์-กับ-cpp
ระบุภาษาต้นทาง: C, C++, Objective-C หรือแอสเซมบลี นี้ไม่มีอะไรจะทำ
ด้วยความสอดคล้องมาตรฐานหรือการขยาย; มันแค่เลือกว่าไวยากรณ์พื้นฐานใดที่จะ
คาดหวัง. หากคุณไม่ได้ให้ตัวเลือกเหล่านี้เลย cpp จะอนุมานภาษาจาก
นามสกุลของไฟล์ต้นฉบับ: .c, ซีซี., .m,หรือ .S. ส่วนขยายทั่วไปอื่นๆ สำหรับ
C ++ และแอสเซมบลีก็รู้จักเช่นกัน ถ้า cpp ไม่รู้จักนามสกุล มัน
จะถือว่าไฟล์เป็น C; นี่เป็นโหมดทั่วไปที่สุด
หมายเหตุ cpp เวอร์ชันก่อนหน้ายอมรับ a -lang ตัวเลือกที่เลือกทั้ง
ภาษาและระดับความสอดคล้องของมาตรฐาน ตัวเลือกนี้ถูกลบเพราะ
มันขัดแย้งกับ -l ตัวเลือก
-std=มาตรฐาน
-แอนซี
ระบุมาตรฐานที่รหัสควรสอดคล้อง ปัจจุบัน CPP รู้เรื่อง C
และมาตรฐาน C++; คนอื่น ๆ อาจถูกเพิ่มในอนาคต
มาตรฐาน อาจเป็นหนึ่งใน:
"ซี90"
"ซี89"
"iso9899:1990"
มาตรฐาน ISO C ตั้งแต่ปี 1990 c90 เป็นชวเลขจารีตประเพณีสำหรับเวอร์ชันนี้ของ
มาตรฐาน.
รางวัล -แอนซี ตัวเลือกเทียบเท่ากับ -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 "..."" เช่น
ปกติ
ถ้าหลาย - รวม มีตัวเลือกให้ ไฟล์จะรวมอยู่ในลำดับที่พวกเขา
ปรากฏในบรรทัดคำสั่ง
-ไอมาครอส ไฟล์
ชอบๆ - รวมยกเว้นว่าผลลัพธ์ใด ๆ ที่สร้างโดยการสแกน ไฟล์ ถูกโยนทิ้ง
ห่างออกไป. มาโครที่กำหนดยังคงกำหนดไว้ ซึ่งจะทำให้คุณได้รับมาโครทั้งหมด
จากส่วนหัวโดยไม่ประมวลผลการประกาศด้วย
ไฟล์ทั้งหมดที่ระบุโดย -ไอมาครอส จะถูกประมวลผลก่อนไฟล์ทั้งหมดที่ระบุโดย - รวม.
-idirอาฟเตอร์ dir
ค้นหา dir สำหรับไฟล์ส่วนหัว แต่ทำอย่างนั้น หลังจาก ไดเร็กทอรีทั้งหมดที่ระบุด้วย -I และ
ไดเร็กทอรีระบบมาตรฐานหมดแล้ว dir ถือเป็นระบบ ได้แก่
ไดเร็กทอรี ถ้า dir เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วย sysroot
คำนำหน้า; ดู --sysroot และ -isysroot.
-iprefix อุปสรรค
ระบุ อุปสรรค เป็นคำนำหน้าต่อไป -iกับคำนำหน้า ตัวเลือก. หากคำนำหน้า
แทนไดเร็กทอรี คุณควรรวมสุดท้าย /.
-iกับคำนำหน้า dir
-iกับคำนำหน้าก่อน dir
ผนวก dir ไปยังคำนำหน้าที่ระบุก่อนหน้านี้ด้วย -iprefixและเพิ่มผลลัพธ์
ไดเรกทอรีไปยังเส้นทางการค้นหารวม -iกับคำนำหน้าก่อน วางไว้ที่เดียวกัน -I
จะ; -iกับคำนำหน้า วางไว้ที่ไหน -idirอาฟเตอร์ หากว่า
-isysroot dir
ตัวเลือกนี้เหมือนกับ --sysroot ตัวเลือก แต่ใช้กับไฟล์ส่วนหัวเท่านั้น (ยกเว้นสำหรับ
เป้าหมายของดาร์วิน ซึ่งใช้กับทั้งไฟล์ส่วนหัวและไลบรารี) ดู
--sysroot ตัวเลือกสำหรับข้อมูลเพิ่มเติม
-imultilib dir
ใช้ dir เป็นไดเร็กทอรีย่อยของไดเร็กทอรีที่มีส่วนหัว C++ เฉพาะเป้าหมาย
-ไอซิสเต็ม dir
ค้นหา dir สำหรับไฟล์ส่วนหัวหลังจากไดเร็กทอรีทั้งหมดที่ระบุโดย -I แต่ก่อนที่
ไดเร็กทอรีระบบมาตรฐาน ทำเครื่องหมายว่าเป็นไดเร็กทอรีระบบ เพื่อให้ไดเร็กทอรีเหมือนกัน
การดูแลเป็นพิเศษตามที่ใช้กับไดเร็กทอรีระบบมาตรฐาน
If dir เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วยคำนำหน้า sysroot ดู
--sysroot และ -isysroot.
-iquote dir
ค้นหา dir สำหรับไฟล์ส่วนหัวที่ขอด้วย "#include "ไฟล์""; พวกเขาจะไม่
ค้นหา "#includeไฟล์>"ก่อนไดเร็กทอรีทั้งหมดที่ระบุโดย -I และก่อนที่จะ
ไดเร็กทอรีระบบมาตรฐาน
If dir เริ่มต้นด้วย "=" จากนั้น "=" จะถูกแทนที่ด้วยคำนำหน้า sysroot ดู
--sysroot และ -isysroot.
-fdirectives-เท่านั้น
เมื่อประมวลผลล่วงหน้า ให้จัดการคำสั่ง แต่อย่าขยายมาโคร
พฤติกรรมของตัวเลือกขึ้นอยู่กับ -E และ -fประมวลผลล่วงหน้า ตัวเลือก
กับ -Eการประมวลผลล่วงหน้าจำกัดเฉพาะการจัดการคำสั่งเช่น "#define"
"#ifdef" และ "#ข้อผิดพลาด" การทำงานของตัวประมวลผลล่วงหน้าอื่นๆ เช่น การขยายมาโครและ
ไม่ได้ทำการแปลงไตรกราฟ นอกจากนี้ -วว ตัวเลือกโดยปริยาย
เปิดการใช้งาน
กับ -fประมวลผลล่วงหน้า, คำจำกัดความของบรรทัดคำสั่งและมาโครในตัวส่วนใหญ่คือ
พิการ. มาโครเช่น "__LINE__" ซึ่งขึ้นอยู่กับบริบทจะได้รับการจัดการ
โดยทั่วไป. ซึ่งช่วยให้สามารถรวบรวมไฟล์ที่ประมวลผลไว้ล่วงหน้าด้วย "-E
-fdirectives เท่านั้น".
พร้อมทั้ง -E และ -fประมวลผลล่วงหน้ากฎสำหรับ -fประมวลผลล่วงหน้า มีความสำคัญ นี้
เปิดใช้งานการประมวลผลล่วงหน้าของไฟล์ที่ประมวลผลก่อนหน้านี้ด้วย "-E
-fdirectives เท่านั้น".
-fdollars-ในตัวระบุ
ยอมรับ $ ในตัวระบุ
-fexttended-ตัวระบุ
ยอมรับชื่ออักขระสากลในตัวระบุ ตัวเลือกนี้เป็นแบบทดลอง ใน
GCC เวอร์ชันอนาคต จะเปิดใช้งานโดยค่าเริ่มต้นสำหรับ C99 และ C++
-fno-canonical-system-ส่วนหัว
เมื่อประมวลผลล่วงหน้า อย่าย่อพาธส่วนหัวของระบบด้วยการกำหนดรูปแบบบัญญัติ
-fประมวลผลล่วงหน้า
ระบุตัวประมวลผลล่วงหน้าว่าไฟล์อินพุตได้รับการประมวลผลล่วงหน้าแล้ว นี้
ยับยั้งสิ่งต่างๆ เช่น การขยายมาโคร การแปลง Trigraph เลี่ยงการต่อบรรทัดใหม่
และการประมวลผลคำสั่งส่วนใหญ่ ตัวประมวลผลล่วงหน้ายังคงรับรู้และลบออก
ความคิดเห็นเพื่อให้คุณสามารถส่งไฟล์ที่ประมวลผลล่วงหน้าด้วย -C ไปยังคอมไพเลอร์โดยไม่ต้อง
ปัญหา. ในโหมดนี้ ตัวประมวลผลล่วงหน้าที่รวมไว้เป็นมากกว่าตัวสร้างโทเค็น
สำหรับปลายด้านหน้า
-fประมวลผลล่วงหน้า เป็นนัยถ้าไฟล์อินพุตมีนามสกุลใดนามสกุลหนึ่ง .i, .ii or .ไมล์.
นี่คือส่วนขยายที่ GCC ใช้สำหรับไฟล์ที่ประมวลผลล่วงหน้าที่สร้างโดย -save-อุณหภูมิ.
-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-ชุดอักขระ, ชุดอักขระ สามารถเข้ารหัสใด ๆ ที่สนับสนุนโดย "iconv" ของระบบ
กิจวัตรประจำวันของห้องสมุด อย่างไรก็ตาม คุณจะมีปัญหากับการเข้ารหัสที่ไม่เหมาะสม
ตรงใน "wchar_t"
-finput-charset=ชุดอักขระ
ตั้งค่าชุดอักขระอินพุต ใช้สำหรับแปลจากชุดอักขระของอินพุต
ไฟล์ไปยังชุดอักขระต้นทางที่ใช้โดย GCC หากสถานที่ไม่ระบุหรือ GCC
ไม่สามารถรับข้อมูลนี้จากโลแคล ค่าเริ่มต้นคือ UTF-8 นี้สามารถ
แทนที่ด้วยโลแคลหรือตัวเลือกบรรทัดคำสั่งนี้ ปัจจุบันคำสั่ง
ตัวเลือกบรรทัดมีความสำคัญกว่าหากมีข้อขัดแย้ง ชุดอักขระ สามารถเข้ารหัสใด ๆ ก็ได้
สนับสนุนโดยรูทีนไลบรารี "iconv" ของระบบ
-fworking-ไดเรกทอรี
เปิดใช้งานการสร้าง linemarkers ในเอาต์พุตตัวประมวลผลล่วงหน้าที่จะให้คอมไพเลอร์
ทราบไดเร็กทอรีการทำงานปัจจุบันในขณะที่ประมวลผลล่วงหน้า เมื่อตัวเลือกนี้คือ
เปิดใช้งาน ตัวประมวลผลล่วงหน้าจะปล่อยตัวทำเครื่องหมายเส้นที่สองหลังจากตัวทำเครื่องหมายเริ่มต้น
ด้วยไดเร็กทอรีการทำงานปัจจุบันตามด้วยสแลชสองตัว GCC จะใช้สิ่งนี้
ไดเร็กทอรีเมื่อมีอยู่ในอินพุตที่ประมวลผลล่วงหน้าเนื่องจากไดเร็กทอรีที่ปล่อยออกมาเป็น
ไดเร็กทอรีการทำงานปัจจุบันในรูปแบบข้อมูลการดีบักบางรูปแบบ ตัวเลือกนี้คือ
เปิดใช้งานโดยปริยายหากเปิดใช้งานข้อมูลการดีบัก แต่สิ่งนี้สามารถยับยั้งได้ด้วย
แบบฟอร์มปฏิเสธ -fno-working-ไดเรกทอรี. หาก -P มีแฟล็กอยู่ในคำสั่ง
บรรทัด ตัวเลือกนี้ไม่มีผล เนื่องจากไม่มีคำสั่ง "#line" ออกมาแต่อย่างใด
-fno-show-คอลัมน์
อย่าพิมพ์หมายเลขคอลัมน์ในการวินิจฉัย นี่อาจมีความจำเป็นหากการวินิจฉัยคือ
ถูกสแกนโดยโปรแกรมที่ไม่เข้าใจหมายเลขคอลัมน์ เช่น
เดแจนู.
-A คำกริยา=คำตอบ
ยืนยันด้วยภาคแสดง คำกริยา และตอบ คำตอบ. แบบฟอร์มนี้คือ
ชอบแบบเก่ามากกว่า -A คำกริยา(คำตอบ)ซึ่งยังคงรองรับอยู่เพราะว่า
ไม่ใช้อักขระพิเศษของเชลล์
-A -คำกริยา=คำตอบ
ยกเลิกการยืนยันด้วยภาคแสดง คำกริยา และตอบ คำตอบ.
-dCHARS
CHAR เป็นลำดับของอักขระต่อไปนี้ตั้งแต่หนึ่งตัวขึ้นไป และต้องไม่เป็น
นำหน้าด้วยช่องว่าง อักขระอื่น ๆ ถูกตีความโดยคอมไพเลอร์ที่เหมาะสมหรือ
สงวนไว้สำหรับ GCC เวอร์ชันต่อๆ ไป และจะถูกละเว้นอย่างเงียบๆ หากคุณระบุ
อักขระที่มีพฤติกรรมขัดแย้งกัน ผลลัพธ์ไม่ได้กำหนดไว้
M แทนที่จะเป็นเอาต์พุตปกติ ให้สร้างรายการของ #กำหนด คำสั่งสำหรับ .ทั้งหมด
มาโครที่กำหนดไว้ระหว่างการดำเนินการของตัวประมวลผลล่วงหน้า รวมถึงที่กำหนดไว้ล่วงหน้า
มาโคร วิธีนี้จะช่วยให้คุณค้นพบว่ามีอะไรที่กำหนดไว้ล่วงหน้าในเวอร์ชันของคุณ
พรีโปรเซสเซอร์ สมมติว่าคุณไม่มีไฟล์ ฟู, คำสั่ง
แตะ foo.h; cpp -dM foo.h
จะแสดงมาโครที่กำหนดไว้ล่วงหน้าทั้งหมด
ถ้าคุณใช้ -ดีเอ็ม ปราศจาก -E ตัวเลือก -ดีเอ็ม ถูกตีความว่าเป็นคำพ้องความหมายสำหรับ
-fdump-rtl-จักร.
D Like M เว้นแต่ในสองประการ: มันไม่ ไม่ รวมมาโครที่กำหนดไว้ล่วงหน้าและมัน
เอาท์พุท ทั้งสอง #กำหนด คำสั่งและผลลัพธ์ของการประมวลผลล่วงหน้า ทั้งสองแบบ
ของเอาต์พุตไปที่ไฟล์เอาต์พุตมาตรฐาน
N Like Dแต่ให้แสดงเฉพาะชื่อมาโคร ไม่ใช่ส่วนขยาย
I เอาท์พุต #include คำสั่งนอกเหนือจากผลลัพธ์ของการประมวลผลล่วงหน้า
U Like D ยกเว้นเฉพาะมาโครที่ขยายหรือทดสอบความชัดเจน
ในคำสั่งของตัวประมวลผลล่วงหน้าเป็นเอาต์พุต เอาต์พุตล่าช้าจนกว่าจะใช้งานหรือ
การทดสอบมาโคร และ #อันเดฟ คำสั่งยังส่งออกสำหรับมาโครที่ทดสอบแล้ว แต่
ไม่ได้กำหนดไว้ในขณะนั้น
-P ยับยั้งการสร้างเส้นในเอาต์พุตจากตัวประมวลผลล่วงหน้า นี่อาจจะเป็น
มีประโยชน์เมื่อรันตัวประมวลผลล่วงหน้าในสิ่งที่ไม่ใช่รหัส C และจะถูกส่ง
ไปยังโปรแกรมที่อาจสับสนโดยตัวทำเครื่องหมายเส้น
-C อย่าทิ้งความคิดเห็น ความคิดเห็นทั้งหมดจะถูกส่งผ่านไปยังไฟล์ที่ส่งออก ยกเว้น
สำหรับความคิดเห็นในคำสั่งที่ประมวลผลแล้ว ซึ่งจะถูกลบไปพร้อมกับคำสั่งนั้น
คุณควรเตรียมพร้อมสำหรับผลข้างเคียงเมื่อใช้ -C; มันทำให้พรีโปรเซสเซอร์ไป
ถือว่าความคิดเห็นเป็นโทเค็นในสิทธิของตนเอง ตัวอย่างเช่น ความคิดเห็นที่ปรากฏที่
จุดเริ่มต้นของสิ่งที่จะเป็น directive line มีผลกับการเปลี่ยนบรรทัดนั้นให้เป็น an
บรรทัดต้นทางธรรมดา เนื่องจากโทเค็นแรกในบรรทัดไม่มี a . อีกต่อไป #.
- ปชช อย่าละทิ้งความคิดเห็น รวมทั้งระหว่างการขยายมาโคร ประมาณนี้ค่ะ -Cยกเว้น
ความคิดเห็นที่อยู่ภายในแมโครนั้นจะถูกส่งผ่านไปยังไฟล์เอาต์พุตด้วยโดยที่
มาโครถูกขยาย
นอกจากผลข้างเคียงของ -C ตัวเลือก, - ปชช ตัวเลือกทำให้เกิดสไตล์ C ++ ทั้งหมด
ความคิดเห็นภายในมาโครที่จะแปลงเป็นความคิดเห็นแบบ C เพื่อป้องกันภายหลัง
การใช้มาโครนั้นจากการแสดงความคิดเห็นส่วนที่เหลือของบรรทัดต้นทางโดยไม่ตั้งใจ
รางวัล - ปชช โดยทั่วไปจะใช้ตัวเลือกเพื่อสนับสนุนความคิดเห็นที่เป็นผ้าสำลี
-แบบดั้งเดิม-cpp
พยายามเลียนแบบพฤติกรรมของตัวประมวลผลล่วงหน้า C ที่ล้าสมัย เมื่อเทียบกับ ISO C
พรีโปรเซสเซอร์
-ไตรกราฟ
ประมวลผลลำดับไตรกราฟ
-รีแมป
เปิดใช้งานรหัสพิเศษเพื่อแก้ไขระบบไฟล์ที่อนุญาตเฉพาะไฟล์ที่สั้นมากเท่านั้น
ชื่อเช่น MS-DOS
--ช่วยด้วย
--เป้าหมาย-ช่วยเหลือ
พิมพ์ข้อความที่อธิบายตัวเลือกบรรทัดคำสั่งทั้งหมดแทนการประมวลผลล่วงหน้า
-v โหมดละเอียด พิมพ์หมายเลขเวอร์ชันของ GNU CPP ที่จุดเริ่มต้นของการดำเนินการและ
รายงานรูปแบบสุดท้ายของเส้นทางรวม
-H พิมพ์ชื่อของแต่ละไฟล์ส่วนหัวที่ใช้ นอกเหนือจากกิจกรรมปกติอื่นๆ แต่ละ
เยื้องชื่อเพื่อแสดงว่าลึกใน #include กองมันเป็น ส่วนหัวที่คอมไพล์แล้ว
ไฟล์ยังถูกพิมพ์แม้ว่าจะพบว่าไม่ถูกต้อง คอมไพล์ล่วงหน้าที่ไม่ถูกต้อง
ไฟล์ส่วนหัวพิมพ์ด้วย ...NS และถูกต้องด้วย ... ! .
-version
--รุ่น
พิมพ์หมายเลขเวอร์ชันของ GNU CPP ด้วยหนึ่งขีด ให้ดำเนินการประมวลผลล่วงหน้าตามปกติ
ด้วยเส้นประสองเส้น ให้ออกทันที
และพวกเรา
ส่วนนี้อธิบายตัวแปรสภาพแวดล้อมที่ส่งผลต่อวิธีการทำงานของ CPP คุณสามารถ
ใช้เพื่อระบุไดเร็กทอรีหรือคำนำหน้าเพื่อใช้ในการค้นหาไฟล์รวมหรือto
เอาต์พุตการพึ่งพาการควบคุม
โปรดทราบว่าคุณยังสามารถระบุสถานที่ที่จะค้นหาโดยใช้ตัวเลือกเช่น -Iและควบคุม
เอาต์พุตการพึ่งพาพร้อมตัวเลือกเช่น -M. สิ่งเหล่านี้มีความสำคัญเหนือกว่าตัวแปรสภาพแวดล้อม
ซึ่งจะมีความสำคัญเหนือการกำหนดค่าของ GCC
ซีพีเอธ
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
ค่าของตัวแปรแต่ละตัวคือรายการของไดเร็กทอรีคั่นด้วยอักขระพิเศษมาก
กดไลก์ เส้นทางเพื่อค้นหาไฟล์ส่วนหัว ตัวละครพิเศษ,
"PATH_SEPARATOR" ขึ้นอยู่กับเป้าหมายและกำหนดที่เวลาบิลด์ GCC สำหรับ Microsoft
เป้าหมายที่ใช้ Windows คือเครื่องหมายอัฒภาค และสำหรับเป้าหมายอื่นๆ เกือบทั้งหมด จะเป็น
ลำไส้ใหญ่.
ซีพีเอธ ระบุรายการของไดเร็กทอรีที่จะค้นหาราวกับว่าระบุด้วย -Iแต่
หลังจากเส้นทางใด ๆ ที่กำหนดด้วย -I ตัวเลือกบนบรรทัดคำสั่ง ตัวแปรสภาพแวดล้อมนี้
ใช้โดยไม่คำนึงว่าภาษาใดจะถูกประมวลผลล่วงหน้า
ตัวแปรสภาพแวดล้อมที่เหลือใช้เฉพาะเมื่อประมวลผลล่วงหน้าโดยเฉพาะ
ภาษาที่ระบุ แต่ละรายการระบุรายการของไดเร็กทอรีที่จะค้นหาราวกับว่า
ระบุด้วย -ไอซิสเต็มแต่หลังจากเส้นทางใด ๆ ที่ให้ไว้กับ -ไอซิสเต็ม ตัวเลือกบน
บรรทัดคำสั่ง.
ในตัวแปรทั้งหมดเหล่านี้ องค์ประกอบว่างจะสั่งให้คอมไพเลอร์ค้นหาปัจจุบัน
ไดเรกทอรีการทำงาน องค์ประกอบว่างสามารถปรากฏที่จุดเริ่มต้นหรือจุดสิ้นสุดของเส้นทาง สำหรับ
เช่น ถ้าค่าของ ซีพีเอธ คือ ":/special/include" ซึ่งมีผลเหมือนกับ
-ผม. -I/พิเศษ/รวม.
การพึ่งพาอาศัยกัน_OUTPUT
หากมีการตั้งค่าตัวแปรนี้ ค่าของตัวแปรนี้จะระบุวิธีการแสดงการพึ่งพาสำหรับ Make based
ในไฟล์ส่วนหัวที่ไม่ใช่ระบบที่ประมวลผลโดยคอมไพเลอร์ ไฟล์ส่วนหัวของระบบคือ
ละเว้นในผลลัพธ์การพึ่งพา
คุณค่าของ การพึ่งพาอาศัยกัน_OUTPUT สามารถเป็นเพียงชื่อไฟล์ได้ ซึ่งในกรณีนี้ Make rule
ถูกเขียนไปยังไฟล์นั้น โดยเดาชื่อเป้าหมายจากชื่อไฟล์ต้นทาง หรือ
ค่าสามารถมีรูปแบบ ไฟล์ เป้าซึ่งในกรณีนี้กฎจะถูกเขียนไปยัง file ไฟล์
การใช้ เป้า เป็นชื่อเป้าหมาย
กล่าวอีกนัยหนึ่งตัวแปรสภาพแวดล้อมนี้เทียบเท่ากับการรวมตัวเลือก -มม
และ -มฟล, พร้อมตัวเลือก -มท สลับกันด้วย
SUNPRO_DEPENDENCIES
ตัวแปรนี้เหมือนกับ การพึ่งพาอาศัยกัน_OUTPUT (ดูด้านบน) ยกเว้นระบบนั้น
ไฟล์ส่วนหัวจะไม่ถูกละเลย ดังนั้นจึงหมายความว่า -M มากกว่า -มม. อย่างไรก็ตาม
ละเว้นการพึ่งพาไฟล์อินพุตหลัก
ใช้ aarch64-linux-gnu-cpp-4.8 ออนไลน์โดยใช้บริการ onworks.net