Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将标题放在“中”有什么好处吗;包括「;项目的子项目? 我注意到流行的C++库的源代码有独立的 SRC < /C> >代码>包含文件夹,其中包含“代码> *.CPP< /Cord>和 *.H/COD>文件。这样做比简单地将每个.cpp与其匹配的.h放在同一目录中有好处吗?_C++_Header Files_Project Structure - Fatal编程技术网

将标题放在“中”有什么好处吗;包括「;项目的子项目? 我注意到流行的C++库的源代码有独立的 SRC < /C> >代码>包含文件夹,其中包含“代码> *.CPP< /Cord>和 *.H/COD>文件。这样做比简单地将每个.cpp与其匹配的.h放在同一目录中有好处吗?

将标题放在“中”有什么好处吗;包括「;项目的子项目? 我注意到流行的C++库的源代码有独立的 SRC < /C> >代码>包含文件夹,其中包含“代码> *.CPP< /Cord>和 *.H/COD>文件。这样做比简单地将每个.cpp与其匹配的.h放在同一目录中有好处吗?,c++,header-files,project-structure,C++,Header Files,Project Structure,这样构造代码通常更容易,特别是当您要将其导出为带有预编译库的API时。(公共)头文件将成为您的API,将它们与源文件分开存放是有意义的,因为这是必须随库分发的代码部分。可用选项包括 module/*.{cpp,h}最适合相关文件的空间位置,最不适合需要应用严格的API焦点(向后兼容性、版本与补丁等) module/{include/*.h,src/*.{cpp,h}}-适用于API焦点,适用于空间位置,我的首选 include/module/*.h,src/module/*.{cpp,h}最适

这样构造代码通常更容易,特别是当您要将其导出为带有预编译库的API时。(公共)头文件将成为您的API,将它们与源文件分开存放是有意义的,因为这是必须随库分发的代码部分。

可用选项包括

  • module/*.{cpp,h}
    最适合相关文件的空间位置,最不适合需要应用严格的API焦点(向后兼容性、版本与补丁等)
  • module/{include/*.h,src/*.{cpp,h}}
    -适用于API焦点,适用于空间位置,我的首选
  • include/module/*.h,src/module/*.{cpp,h}
    最适合API焦点,不适合空间位置

    • 没有真正的优点和缺点,也不是一般的优点和缺点。在设计API(与应用程序相比)时,您必须在库中提供一组包含文件,这一特定的头文件使开发人员选择将它们与文件系统中的源文件分离的解决方案

      我不认为一个组织比另一个更好,但我可以给你两个建议,帮助你决定什么对你的项目最有利:

      • 尽量简化文件层次结构。当涉及到项目配置、安装脚本和版本控制时,嵌入的文件夹越少,麻烦就越少

      • 最重要的不是头文件的位置,而是如何包含头文件:

        • 或“
        • 从内部源文件还是从使用标题的外部代码
        • 带路径还是直接带文件名
      在调用
      #include
      时,查看您希望如何编写标题有助于您决定将标题放在哪里更方便


      就我而言,我真的不喜欢头/源分离。我的API不打算公开某些标题,因此我将所有源代码放在一个文件夹中,或者我更喜欢公共/私人分离。

      我个人不认为这样做有什么好处,我也不喜欢这样做。我认为C++中的CPP文件带有它的头,并且不能与它分开。我倾向于在“Cype”DIR和其他库中放置一个公共API标头,这些库是在“.rc文件”的“Src”DIR旁边的.cc文件。这使得为用户打包二进制文件+include dir变得很容易,并且避免了实现细节标题的影响。