代码之家  ›  专栏  ›  技术社区  ›  Wartin

包含C++源文件是一种经过批准的方法吗?

  •  4
  • Wartin  · 技术社区  · 16 年前

    我有一个大型的C++文件(SS.cpp),我决定将其拆分为较小的文件,这样我就可以在不需要阿司匹林的情况下导航它。所以我创造了

    SS_main.cpp
    SS_screen.cpp
    SS_disk.cpp
    SS_web.cpp
    SS_functions.cpp
    

    并将初始SS.cpp文件中的所有函数剪切粘贴到它们上。

    #include "SS_main.cpp"
    #include "SS_screen.cpp" 
    #include "SS_disk.cpp" 
    #include "SS_web.cpp"
    #include "SS_functions.cpp"
    

    • 我必须手动指出它们是否包含Subversion。

    当文件变得非常大时,您认为将源文件包含在其他源中是一种可接受的解决方法吗?我应该说,将实现的类拆分为更小的类在这里不是一种选择。

    6 回复  |  直到 16 年前
        1
  •  8
  •   kidnamedlox    16 年前

    有时候,包含一个实现文件是可以的,但这听起来不像是其中之一。通常,这仅在处理某些自动生成的文件时有用,例如MIDL编译器的输出。作为大文件的解决方法,没有。

    您应该将所有这些源文件添加到您的项目中,而不是#包含它们。将一个大类拆分为多个实现文件并没有错,但只需将它们添加到项目中,像这样包含它们并没有多大意义。

    -- 此外,作为仅供参考,您可以将文件添加到项目中,然后指示编译器忽略它们。这样它们仍然可以搜索。为此,将文件添加到项目中,然后右键单击它,转到“属性”,在“常规”下将“从生成中排除”设置为“是”。

        2
  •  9
  •   Gerald    16 年前

        3
  •  4
  •   dirkgently    16 年前

    您不包括实现(.cpp)文件。为这些包含函数/类声明的实现文件创建头文件,并根据需要包含这些头文件。

        4
  •  3
  •   Community Mohan Dere    9 年前

    实际上,有时您会希望包含CPP文件。这里有几个问题 Unity Builds

        5
  •  2
  •   Clifford    16 年前

    Separate compilation , 链接 和什么 头文件 是为了。

    #include "function.h"
    
    int main()
    {
        func1() ;
    }
    

    功能。h

    #if !defined FUNCTION_H
    #define FUNCTION_H
    
    extern void func1() ;
    
    #endif
    

    void func1()
    {
        // do stuff
    }
    

    然后分别编译function.cpp和main.cpp(通过将它们添加到项目的源代码中),然后链接。头文件是必要的,这样编译器就可以知道func1()的接口,而无需看到完整的定义。标题应该添加到项目标题中,然后你会发现源浏览器和自动补全等工作正常。

        6
  •  2
  •   Sam    16 年前

    已经创建了一个大的cpp文件,其大小足以考虑将其拆分为更小、更易于管理的文件。拟议的拆分为:
    SS_main.cpp


    SS_web.cpp
    SS_functions.cpp

    这似乎表明,从规范和设计的角度来看,存在单独的功能单元。我们只能猜测这些代码单元之间的耦合。

    我们正在这里进行重构。