为什么现代C++ IDE 不能自动生成头文件
Why cannot modern C++ IDEs auto-generate header files?
我了解头文件提供的好处和灵活性,符号发现,编译器处理速度等。我不明白的是为什么现代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文件中(。
至于"头文件中定义的有用函数",这是开发人员希望编译器在许多翻译单元中内联其函数的常见做法。
- 生成文件不对文件使用隐式规则
- 生成一个生成文件,该生成文件使用Automake在一个步骤中编译和链接所有源文件
- sqlite3 和生成文件中的链接出现问题
- 将生成文件转换为 CMakeLists.txt等效项
- Qt自动生成的.rc文件无法打开包含文件'windows.h'
- 如何使用C 根据当前时间自动生成新的CSV文件
- 生成文件:为每个包含的标头自动编译源代码
- 在自动生成的文件之间生成依赖关系
- Visual C 2010:LNK1104,LNK1181- .OBJ文件不会自动生成
- Qt自动生成的表单提供了错误的源代码文件路径
- 从eclipse自动生成的依赖项中排除文件夹
- 生成文件:自动生成二进制文件的依赖项
- 自动生成的 cpp 文件中未知大小的多维数组的标头声明
- 为什么现代C++ IDE 不能自动生成头文件
- 生成文件:特定的"无输入文件",自动变量
- 在生成文件中自动选择与 C++11 兼容的 g++ 版本
- 生成文件自动 SRC 文件检测和依赖项生成
- 如何在不使用IDE的情况下从cpp文件自动生成/更新头文件
- 从*自动生成objective-c类.XSD模式文件
- 如何自动生成c++头文件