ฉันต้องการที่จะทำสิ่งที่ชอบ
#print "C Preprocessor got here!"
เพื่อวัตถุประสงค์ในการดีบัก วิธีใดที่ดีที่สุด / พกพาสะดวกที่สุดในการทำเช่นนี้
ฉันต้องการที่จะทำสิ่งที่ชอบ
#print "C Preprocessor got here!"
เพื่อวัตถุประสงค์ในการดีบัก วิธีใดที่ดีที่สุด / พกพาสะดวกที่สุดในการทำเช่นนี้
คำตอบ:
warning
สั่งน่าจะใกล้เคียงที่สุดที่คุณจะได้รับ แต่ก็ไม่ได้ทั้งแพลตฟอร์ม:
#warning "C Preprocessor got here!"
AFAIK นี้ใช้ได้กับคอมไพเลอร์ส่วนใหญ่ยกเว้น MSVC ซึ่งคุณจะต้องใช้pragma
คำสั่ง:
#pragma message ( "C Preprocessor got here!" )
#define WARNING(msg) _Pragma("message " #msg)
คุณอาจต้องการลอง: #pragma message("Hello World!")
คอมไพเลอร์ C ส่วนใหญ่จะรู้จัก#warning
คำสั่งดังนั้น
#warning "Got here"
นอกจากนี้ยังมีคำสั่ง '#error' มาตรฐาน
#error "Got here"
แม้ว่าคอมไพเลอร์ทั้งหมดจะรองรับสิ่งนั้น แต่ก็จะหยุดการคอมไพล์ / การประมวลผลล่วงหน้าด้วย
#pragma message("foo")
ใช้งานได้ดี ยังไม่หยุดการรวบรวมแม้ว่าคุณจะใช้ -Werror
อีกวิธีหนึ่งคือการใช้ความคิดเห็นและเชลล์สคริปต์เพื่อประมวลผล สิ่งนี้ต้องใช้ระเบียบวินัย (หรือเชลล์สคริปต์ที่จับการพิมพ์ผิด)
ตัวอย่างเช่นฉันเพิ่มความคิดเห็นที่จัดรูปแบบ//TODO
แล้วเชลล์สคริปต์ซึ่งรวบรวมความคิดเห็นทั้งหมดไว้ในรายงาน
สำหรับกรณีการใช้งานที่ซับซ้อนมากขึ้นคุณสามารถลองเขียนตัวประมวลผลล่วงหน้าแบบธรรมดาของคุณเอง ตัวอย่างเช่นคุณสามารถแก้ไขแหล่งที่มาของคุณเป็น*.c2
ไฟล์ได้ พรีโปรเซสเซอร์อย่างง่ายจะอ่านซอร์สค้นหา//TODO
และเขียนprintf("TODO ...")
ลงใน*.c
ไฟล์เอาต์พุต
คุณทำไม่ได้ ตัวประมวลผลล่วงหน้าจะถูกประมวลผลก่อนรหัส C ไม่มีคำสั่งพรีโปรเซสเซอร์ที่จะพิมพ์ไปยังหน้าจอเนื่องจากโค้ดของตัวประมวลผลล่วงหน้าไม่ได้ถูกเรียกใช้งานจึงถูกใช้เพื่อสร้างรหัส C ซึ่งจะรวบรวมเป็นโค้ดที่เรียกใช้งานได้
มีอะไรผิดพลาด:
#ifdef ...
printf("Hello");
#endif
เพราะนี่คือทั้งหมดที่คุณสามารถทำได้เท่าที่ตัวประมวลผลล่วงหน้าไป
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... ฉันจะต้องลอง แต่สัญชาตญาณบอกฉันว่าคำตอบคือไม่