为什么现代C++ IDE 不能自动生成头文件

Why cannot modern C++ IDEs auto-generate header files?

本文关键字:自动生成 文件 不能 IDE C++ 为什么      更新时间:2023-10-16

我了解头文件提供的好处和灵活性,符号发现,编译器处理速度等。我不明白的是为什么现代C++ IDE不会根据添加到代码文件中的成员/方法自动生成头文件,从而减少了使头文件与代码文件保持最新所涉及的手动劳动,反之亦然。由于 IDE 仅对头文件进行增量更改,因此开发人员可以修改头文件并保留更改。

可以为添加/重命名/删除方法参数、重命名方法、将方法移动到另一个类等提供重构。在此类重构期间,IDE 将负责更新头文件 + 源文件。

该功能可能类似于Visual Studio中的Visual Form Designer。设计窗体时,IDE 会为该窗体自动生成代码,这些代码存储在单独的 IDE 管理的源文件中。开发人员还可以修改此类代码文件,或者可以在用户管理的源文件中包含其他代码。

使用专业的C++源代码,我遇到了各种可疑的做法:

  • 头文件中定义的整个类,包括函数代码("当我可以在一个地方定义一个类时,为什么要在两个地方定义一个类?!"(

  • 文件中定义的有用函数("当我可以在头文件本身中定义函数时,为什么要费心使头保持最新?!让其他开发人员使用"转到声明"来查找函数,如果他们不想在头文件中查找!

  • 缺少公共/静态函数的标头定义(减少编译时间?,或节省开发时间?(

虽然我不是专业的C++程序员,但来自高级背景(JS,C#,AS3(,但我可以直接感受到与C++一起工作的"降级",我不明白为什么IDE本身无法消除其中一些缺点。

我绝不是在以任何方式嘲笑 IDE 或编译器。我知道C++允许比现代语言更复杂的方法来定义程序(例如。C#(,尽管模板化的复杂性让我无法理解,但我希望看到高级语言的一些好处被引入C++应用程序开发中。

我相信你问题的前提是不正确的。

在头文件中定义函数(或类成员函数(之后,Eclipse Luna IDE 可以自动生成实现存根(在 CPP 文件中(。

在标题中键入以下内容:

class MyClass 
{
  void my_method(const OtherClass& o, const std::string& name) const;
};

然后单击"源>实现方法"。 Eclipse 在 CPP 文件中正确生成如下内容:

void MyClass::my_method(const OtherClass& o, const std::string& name) const
{
   // TODO: Auto-generated method stub.
}

我认为这是一个比"[添加]成员/方法......到代码文件中",然后"自动生成头文件"。 这个想法是大多数开发人员将设计(创建(一个接口,然后开发一个实现(有时在CPP文件中(。

至于"头文件中定义的有用函数",这是开发人员希望编译器在许多翻译单元中内其函数的常见做法。