Bootstrap

C++头文件写了声明,源文件还要再写一遍?试试这个小工具

前言

本文介绍自己写的一个简易命令行工具:

  • 主要功能为根据 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的-_-)有兴趣的也可以瞅瞅。

;