前言
本文介绍自己写的一个简易命令行工具:
- 主要功能为根据 C++ 头文件中的声明语句,自动生成对应的定义语句,并输出到源文件中。
- 项目地址:header_to_file
在 c++ 项目中,目前仍然还是以 头文件、源文件分离 为主,在头文件中写声明,源文件中写定义。这就存在一个重复工作:
一个函数需要写两遍,还可能需要 删除参数的默认值、加上类作用域、命名空间等
比如
// fic.h
std::vector<std::string> fic(std::string s = ""); // 函数声明
// fic.cpp
#include "fic.h"
std::vector<std::string> fic(std::string s)
{
// 我称此为对应的定义语句,实现部分当然是自己写了
// ... ...
}
又或者
// MyClass.h
class MyClass
{
public:
MyClass();
~MyClass();
public:
std::string str() const;
private:
std::string _val;
};
// MyClass.cpp
#include "MyClass.h"
MyClass::MyClass()
:_val{ }
{
// ... ...
}
MyClass::~MyClass()
{
// ... ...
}
std::string MyClass::str() const
{
// ... ...
}
代码量少时还没什么感觉,但是当头文件较多、而且每个文件中的声明语句也是很多时,这时候单单是写定义语句都累死 —— copy来copy去、开几个窗口、看来看去的,难受死。
htf 命令行工具的作用就在于 自动读取头文件,将定义语句输出到源文件中 (我将此功能叫做 htf)。
虽然 VScode 的 C++ 扩展也有此功能,但目前需要一个函数一个函数的点击,比较麻烦。而此工具以 文件 为最小基本单位生成对应的源文件。
下面进行简单的演示
htf 简易命令行工具简单演示
-
test.h:
-
指令调用 htf
-
test.cpp
最后
这是 htf 工具的主要功能,想要了解更多信息请前往 header_to_file
源码也在上面(不过代码写的挺low的-_-)有兴趣的也可以瞅瞅。