gpt4 book ai didi

c++ - C++中声明和定义分开的优点和缺点是什么?

转载 作者:可可西里 更新时间:2023-11-01 16:26:00 26 4
gpt4 key购买 nike

在C++中,函数、变量和常量的声明和定义可以这样分开:

function someFunc();

function someFunc()
{
//Implementation.
}

其实在类的定义中,经常会出现这种情况。类通常在 .h 文件中声明它的成员,然后在相应的 .C 文件中定义这些成员。

这种方法的优点和缺点是什么?

最佳答案

从历史上看,这是为了帮助编译器。在它使用名称之前,您必须给它一个名称列表 - 无论这是实际用法,还是前向声明(C 的默认函数原型(prototype)除外)。

现代语言的现代编译器表明这不再是必需的,因此 C 和 C++(以及 Objective-C,可能还有其他)的语法在这里是历史包袱。事实上,这是 C++ 的一大问题,即使添加适当的模块系统也无法解决。

缺点是:许多严重嵌套的包含文件(我之前跟踪过包含树,它们非常大)和声明和定义之间的冗余 - 所有这些都会导致更长的编码时间和更长的编译时间(曾经比较过之间的编译时间)可比较的 C++ 和 C# 项目?这是造成差异的原因之一)。必须为您提供的任何组件的用户提供头文件。 ODR 违规的可能性。依赖预处理器(许多现代语言不需要预处理器步骤),这会使您的代码更脆弱,更难被工具解析。

优点:不多。您可能会争辩说,为了文档的目的,您得到了一个函数名称列表,这些函数名称被组合在一个地方——但是现在大多数 IDE 都具有某种代码折叠功能,无论如何,任何规模的项目都应该使用文档生成器(例如 doxygen)。使用更简洁、无预处理器、基于模块的语法,工具可以更轻松地遵循您的代码并提供此功能以及更多功能,因此我认为这种“优势”几乎没有实际意义。

关于c++ - C++中声明和定义分开的优点和缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/645778/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com