Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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
单独的;包括「;及;src";应用程序级代码的文件夹? 这个问题主要涉及UNIX/Linux风格的C++开发。我看到许多C++库将它们的头文件存储在“SRIP”文件夹和“SRC”文件夹中的源文件中。为了一致性,我在自己的代码中采用了这一点。但我不清楚应用程序代码是否也应该这样做。我见过一些使用平面目录结构的情况。推荐的方法是什么?_C++_Project Management - Fatal编程技术网

单独的;包括「;及;src";应用程序级代码的文件夹? 这个问题主要涉及UNIX/Linux风格的C++开发。我看到许多C++库将它们的头文件存储在“SRIP”文件夹和“SRC”文件夹中的源文件中。为了一致性,我在自己的代码中采用了这一点。但我不清楚应用程序代码是否也应该这样做。我见过一些使用平面目录结构的情况。推荐的方法是什么?

单独的;包括「;及;src";应用程序级代码的文件夹? 这个问题主要涉及UNIX/Linux风格的C++开发。我看到许多C++库将它们的头文件存储在“SRIP”文件夹和“SRC”文件夹中的源文件中。为了一致性,我在自己的代码中采用了这一点。但我不清楚应用程序代码是否也应该这样做。我见过一些使用平面目录结构的情况。推荐的方法是什么?,c++,project-management,C++,Project Management,在我看来,这两种方法都没有明显的优势。我最终决定将程序和头文件放在一起,因为我的编辑器(Visual SlickEdit)恰好在它们没有分开时提供了额外的引用功能;这似乎没有什么好处。由于头文件的扩展名往往与源文件不同,如果您确实觉得有必要,可以让编辑器单独显示它们--Visual Studio默认情况下会这样做,但我禁用了它,因为我更喜欢将它们一起查看我几乎总是创建include和src文件夹来拆分源代码。我认为这样可以减少文件夹的混乱程度,并且在IDE中更容易找到文件。但我认为这只是品味的问

在我看来,这两种方法都没有明显的优势。我最终决定将程序和头文件放在一起,因为我的编辑器(Visual SlickEdit)恰好在它们没有分开时提供了额外的引用功能;这似乎没有什么好处。由于头文件的扩展名往往与源文件不同,如果您确实觉得有必要,可以让编辑器单独显示它们--Visual Studio默认情况下会这样做,但我禁用了它,因为我更喜欢将它们一起查看

我几乎总是创建include和src文件夹来拆分源代码。我认为这样可以减少文件夹的混乱程度,并且在IDE中更容易找到文件。但我认为这只是品味的问题


这两种方法都是有效的。这取决于你想要遵循的编码风格以及你如何做到这一点。

很大程度上取决于所涉及项目的规模。多达几十个左右的文件,将它们保存在一个目录中往往更方便。对于包含数百或数千个文件的大型应用程序,您开始寻找将它们分开的方法(尽管在我所从事的项目中,它更多地是在功能行上完成的,而不是src/include)。在这两者之间,这可能是有问题的。

我也将它们分开,但不是严格地根据扩展名,而是根据文件的访问权限

假设您有一个管理客户信息的模块,并使用两个类来执行此操作:customer、CustomerValidityChecker。 还假设应用程序中的其他部分只需要了解Customer类,CustomerValidityChecker仅由Customer类用于执行某些检查。 基于这些假设,我将文件存储如下:

公用文件夹(或包含文件夹):

  • 顾客
专用文件夹(或源文件夹):

  • customer.cpp
  • customervaliditychecker.h
  • customervaliditychecker.cpp

这样,模块的调用者就可以立即清楚地知道哪些部分是可访问的(公共的),哪些部分是不可访问的。

为共享库将它们分开是有意义的,因为它们可能以编译形式分发,而不需要源代码。我见过一些项目将“公共”头(可以从项目或库之外的代码访问的头)分离出来,同时将“私有”头和源文件保留在同一目录中。我认为,无论您是在编写共享库还是在编写应用程序级代码,都应该使用一致的方法,因为您永远不知道何时可能希望将在应用程序级编写的内容转换为由多个项目共享的较低级别库。

我将include(header)和源文件放在同一目录中(文件夹)。我为不同的主题创建不同的文件夹。我在尝试查找头文件(调试和研究时)时感到沮丧。在一些商店中,只有两个文件夹:源文件夹和包含文件夹。这些目录往往呈指数增长。重用代码充其量只是一场噩梦

IMHO,我认为按主题组织更好。每个主题文件夹应至少构建到一个库中。不同的项目可以通过搜索或包含文件夹轻松包含主题。项目只需要包含库。智能构建引擎可以将主题文件夹列为依赖项。这加快了构建过程

主题组织还为项目增加了一点安全性。由于文件位于不同的目录中,因此减少了对文件的意外损坏(例如删除错误的文件或替换为不同的版本)。删除“Person”文件夹中的文件不会影响“Shape”文件夹中的文件


这只是我的观点,您的里程可能会有所不同。

我们有一个生成系统,可以自动生成生成文件。它所做的一件事是递归地向下移动任何子目录,并将它们构建为库,将它们与主目录的对象链接在一起以生成应用程序。(实际上,这些“子目录”库是静态的,除非目录名以“.so”结尾。有一点很好,那就是我们的系统的完整构建,有许多可执行文件,不必重复编译公共库

然而,这样做的结果是,头文件和源文件没有分离。这从来都不是一个问题。老实说,我认为这样做更好,因为头文件和源文件具有位置的公共性,你可以抓取一个目录,知道你得到了你需要使用的所有东西。它也适用于Subversion的“外部”功能,以及其他VCS中的类似功能


include/src分离失败的最后一个地方是,如果您使用任何代码生成器,如flex、bison或gengetopts。如果您已经分散了内容,则要弄清楚这些工具应该将其输出放在何处以便构建它们是很棘手的。

我们有一个使用此规则的构建系统。此构建系统是一组用于配置SCON的脚本您可以看到一个使用C++工具的例子:使用/> P> < P> <强>底线< /强>:仍然在更改的源和头进入<代码> /Src < /代码>。(实际上,您可以将所有
.lib
及其
.h
保存在
/lib
中)

  • 在提供的情况下,将自己的源和头放在一起