คำถามติดแท็ก include

7
ฉันจะป้องกันไม่ให้ส่วนหัวนรกได้อย่างไร
เรากำลังเริ่มโครงการใหม่ตั้งแต่เริ่มต้น ประมาณแปดนักพัฒนาระบบย่อยโหลหรือมากกว่านั้นแต่ละคนมีไฟล์ต้นฉบับสี่หรือห้าไฟล์ เราจะทำอย่างไรเพื่อป้องกัน“ หัวนรก”, AKA“ หัวสปาเก็ตตี้”? หนึ่งส่วนหัวต่อไฟล์ต้นฉบับ? บวกหนึ่งต่อระบบย่อย? แยก typdefs, stucts & enums จากฟังก์ชั่นต้นแบบหรือไม่? แยกระบบย่อยภายในออกจากสิ่งของภายนอกของระบบย่อยหรือไม่? ยืนยันว่าทุกไฟล์เดียวไม่ว่าจะเป็นส่วนหัวหรือแหล่งที่มาจะต้องรวบรวมแบบสแตนด์อโลน ฉันไม่ได้ขอวิธีที่ "ดีที่สุด" เพียงชี้ว่าควรระวังอะไรและอาจทำให้เกิดความเศร้าโศกเพื่อที่เราจะได้พยายามหลีกเลี่ยง นี่จะเป็นโครงการ C ++ แต่ข้อมูล C จะช่วยผู้อ่านในอนาคต
44 c++  headers  include 

8
เป็นการดีหรือไม่ที่จะต้องพึ่งพาส่วนหัวที่รวมอยู่ในทรานซิสชัน?
ฉันกำลังล้างค่าการรวมในโครงการ C ++ ที่ฉันกำลังทำงานอยู่และฉันสงสัยอยู่เสมอว่าควรรวมส่วนหัวทั้งหมดที่ใช้โดยตรงในไฟล์ใดไฟล์หนึ่งหรือไม่หรือควรจะรวมเฉพาะขั้นต่ำเปล่าเท่านั้น นี่คือตัวอย่างEntity.hpp: #include "RenderObject.hpp" #include "Texture.hpp" struct Entity { Texture texture; RenderObject render(); } (สมมติว่าการประกาศล่วงหน้าสำหรับRenderObjectไม่ใช่ตัวเลือก) ตอนนี้ฉันรู้ว่าRenderObject.hppรวมถึงTexture.hpp- ฉันรู้ว่าเพราะแต่ละคนRenderObjectมีTextureสมาชิก ยังคงฉันอย่างชัดเจนรวมถึงTexture.hppในเพราะฉันไม่แน่ใจว่ามันเป็นความคิดที่ดีที่จะพึ่งพามันถูกรวมอยู่ในEntity.hppRenderObject.hpp ดังนั้น: เป็นการปฏิบัติที่ดีหรือไม่?
37 c++  c  headers  include 

7
เหตุใดเราต้องรวม. h ขณะที่ทุกอย่างทำงานเมื่อรวมเฉพาะไฟล์. cpp
ทำไมเราต้องรวมทั้งไฟล์.hและ.cppในขณะที่เราสามารถทำให้มันทำงานได้โดยรวม.cppไฟล์ ตัวอย่างเช่นการสร้างfile.hที่มีการประกาศแล้วการสร้างคำนิยามที่มีและรวมทั้งในfile.cppmain.cpp อีกทางหนึ่ง: การสร้างการfile.cppประกาศ / คำจำกัดความที่มี (ไม่มีต้นแบบ) รวมถึงสิ่งmain.cppต่อไปนี้ ทั้งสองทำงานให้ฉัน ฉันไม่เห็นความแตกต่าง บางทีความเข้าใจในกระบวนการรวบรวมและเชื่อมโยงอาจช่วยได้บ้าง
18 c++  c  headers  linking  include 

7
ตรวจสอบให้แน่ใจว่าส่วนหัวจะถูกรวมไว้อย่างชัดเจนในไฟล์ CPP
ฉันคิดว่าเป็นเรื่องดี#includeสำหรับส่วนหัวสำหรับประเภทใด ๆ ที่ใช้ในไฟล์ CPP โดยไม่คำนึงถึงสิ่งที่รวมอยู่ในไฟล์ HPP ดังนั้นฉันจึงอาจเป็นได้#include <string>ทั้ง HPP และ CPP แม้ว่าฉันจะสามารถรวบรวมได้หากฉันข้ามใน CPP ด้วยวิธีนี้ฉันไม่ต้องกังวลว่า HPP ของฉันจะใช้การประกาศล่วงหน้าหรือไม่ มีเครื่องมือใดที่สามารถบังคับใช้#includeรูปแบบการเข้ารหัสนี้ได้หรือไม่? ฉันควรบังคับใช้รูปแบบการเข้ารหัสนี้หรือไม่ เนื่องจากตัวประมวลผลล่วงหน้า / คอมไพเลอร์ไม่สนใจว่า#includeจะมาจาก HPP หรือ CPP ฉันจึงไม่ได้รับคำติชมถ้าฉันลืมทำตามสไตล์นี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.