โดยทั่วไปแล้ว ใช่ โปรแกรมที่มีไฟล์ส่วนหัวมากกว่าปกติจะใช้เวลาในการคอมไพล์นานกว่า
ขออภัย เนื้อหาที่ประมวลผลล่วงหน้าของส่วนหัวอาจแตกต่างกันไป ขึ้นอยู่กับว่าสัญลักษณ์แมโครใดถูกกำหนดและอย่างไร และโดยเฉพาะส่วนหัวของ Microsoft โดยทั่วไป ได้รับการออกแบบ เพื่อให้ได้ผลลัพธ์ที่แตกต่างกันขึ้นอยู่กับสัญลักษณ์ดังกล่าว (ใน C++ มาตรฐาน โดยส่วนใหญ่จะเป็นเพียงสัญลักษณ์ NDEBUG
ซึ่งส่งผลต่อการขยาย assert
) ดังนั้นคอมไพเลอร์จึงเป็นแบบอนุรักษ์นิยมและทำการประมวลผลล่วงหน้าและการคอมไพล์ส่วนหัวซ้ำแล้วซ้ำอีก สำหรับหน่วยการแปลแต่ละหน่วย
เทคนิคทั่วไปอย่างหนึ่งที่ควรหลีกเลี่ยงซึ่งเรียกว่า ส่วนหัวที่คอมไพล์แล้ว
เท่าที่ฉันรู้เทคนิคที่ไม่ธรรมดาซึ่งอาจไม่ได้ใช้โดยคอมไพเลอร์ใด ๆ คือการอนุญาตให้โปรแกรมเมอร์พูดว่า "สำหรับการคอมไพล์ชุดนี้คุณสามารถสรุปได้ว่าส่วนหัวทั้งหมดจะขยายเป็นแบบเดียวกัน" และอาจมีสิ่งนั้นเป็น < em>default (แม้ว่าจะให้ผลลัพธ์ที่แตกต่างจาก C++ มาตรฐานเมื่อสมมติฐานไม่เป็นไปตามนั้น)
ฉันชอบวิธีหลังอย่างยิ่ง เนื่องจากมันจะเร่งความเร็วเกือบทุกรุ่น แต่ส่วนหัวที่คอมไพล์แล้วคือสิ่งที่เรามีอยู่ในทางปฏิบัติ
David Vandevoorde ทำงานใน โมดูล strong> ข้อเสนอ สำหรับ C ++
ตัวอย่างภาษาที่มีโมดูล: Modula-2, Ada, UCSD Pascal
น่าเสียดายที่ยังไม่พร้อมสำหรับ C++11 แต่บางทีเราอาจจะได้รับโมดูลในภายหลัง
person
Cheers and hth. - Alf
schedule
21.12.2013
.h
มันมีค่าคงที่ คลาส และคำจำกัดความของฟังก์ชัน แต่โค้ดจะอยู่ในไฟล์.c
หรือ.cpp
(ซึ่งไม่ได้คอมไพล์โดยอัตโนมัติ) - person SJuan76   schedule 21.12.2013