1 Star 2 Fork 0

BuLiangRenCpp/Header_to_File

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
11个月前
11个月前
11个月前
11个月前
Loading...
README

此项目存在一些设计不合理的地方,尽管我在下一新版本进行了重新设计,但是介于诸多因素,无力继续更新。

一、功能介绍

1. 简介

在 c++ 项目中,目前仍然还是以 头文件、源文件分离 为主,在头文件中写声明,源文件中写定义。这就存在一个重复工作:

一个函数需要写两遍,还可能需要 删除参数的默认值、加上类作用域、命名空间等

htf 命令行工具的作用就在于 自动读取头文件,将定义语句输出到源文件中 (我将此功能叫做 htf)。

2. 简单演示:

i. 单文件处理:

  • 头文件如下:

  • 使用指令调用: htf test.h -o test.cpp

  • 源文件输出如下:

ii. 多文件处理:

  • 有三个头文件如下:

    • type.h: 声明了一些类型

    • test1.h: 导入 type.h,声明了类型 Test1

    • test2.h: 导入 test1.h

  • 指令调用: htf te*.h -o .

    相当于: htf test1.h test2.h -o .

  • 源文件如下:

    • test1.cpp
    • test2.cpp

详情功能:

  • 自动 删除函数默认值
  • 自动添加为类的构造函数 添加初始化列表,并能一定程度地填充参数
  • 自动为类成员函数 添加类作用域
  • 自动 忽略 头文件中的 定义语句
  • 自动 添加命名空间
  • 实现了简化版的 预处理器
    • 目前仅处理 续行符、#include 指令、注释、字符字面量
    • 后续待扩展
  • 有一定量的代码错误提示

仅仅提供有必要的错误提示,因为这是 c++ 编译器的工作

  • other ...

二、工具下载

见 release 处

三、工具使用

此工具采用 指令调用 的方式,指令格式基本同 g++ 编译指令

1. 约定

  • [ ]: 表示 [ ] 中的部分可有可无
  • 中文: 其意思表示当前位置应该输出什么
  • 英文:表示此处是 htf 指令中指定使用的字符
  • 集合:指明集合的说明可以有多个值,未指出的说明只能由一个值

2. htf 指令

  • htf 处理文件:
    • 指令:htf 头文件集合 [-o 输出路径] [-I 头文件搜索目录集合] [-f]
    • 说明:
      • 头文件集合:需要输出的头文件的路径 (支持通配符,见后续)
      • 输出路径:
        • 头文件只有一个,则可以指定为 源文件输出的具体路径
        • 头文件有多个,只能指定为 源文件集合 输出的目录 (默认文件名同头文件名,只是后缀是 .cpp),默认在当前目录下输出
      • 头文件搜索目录集合:指定头文件的搜索目录,默认使用头文件所在目录 (支持通配符,见后续)
      • -f:
        • 省略:当源文件已经存在时,仅给出警告,不做任何处理
        • 给出:当源文件已经存在时,覆盖 源文件

        需要慎重使用


  • htf 显示选项的值

    加入选项 -s,仅显示选项的值,不做任何处理

  • help:

    • 指令: htf -h
    • 输出 htf 指令中的选项信息
  • version:

    • 指令:htf -v
    • 输出当前 htf 版本
  • htf 预处理器

    增加 -E 选项,其余同 htf 处理文件,但是一次只能指定一个头文件,默认输出的文件后缀名为 .i_htf

3. 通配符规则:

  • *:匹配任意多个字符
  • ?:匹配任意一个字符

以上通配符都 不能匹配路径分隔符

【例】

  • *.h:可以匹配 file.h,但是不能匹配 dir/file.h
  • * / *.h:可以匹配 dir/file.h,但是不能匹配 file.h

如果需要匹配目录,则在最后加上路径分隔符,不添加只能匹配文件路径

【例】

  • d * /:可以匹配当前目录下所有以 d 开头的目录
  • ./dir/*/:匹配当前目录下的 dir 目录下的所有目录

四、项目信息

  • C++ 标准: c++17 (<filesystem>)
  • 开发平台: windows 下的 VScode

就代码而言跨平台(项目仅使用 c++ 标准库),但未经过正式测试

  • 构建工具: cmake

    • Release: cmake ..
    • Debug: cmake .. -DDEBUG=1
    • Test: cmake .. -DTEST_BUILD=1
  • 编译器: g++

其他编译器未经过测试

五、可能出现的问题

  • htf 输出代码错误信息,但是语法是正确的

语法以编译器为准,由于 htf 对 c++ 的语法不是完全支持 (目前仅支持常用语法),因此可能出现此种情况

  • htf 处理文件,有的声明函数没有输出定义语句

如果不是文件由于语法错误,那么是 htf 的 bug

  • 出现 以 .i_htf.htf_temp 为后缀的文件,"header_to_file-temp-BLR" 目录,这些是 htf 处理过程中的临时文件。

如果出现此种情况,那么是 htf 的 bug,这些文件、目录都可以直接删除

如果出现以上问题 或者 其他 bug,请联系开发者

空文件

简介

解析 c++ 头文件,根据其声明语句自动输出定义语句到源文件中的简单命令行工具 展开 收起
取消

发行版 (2)

全部
11个月前

贡献者 (1)

全部

语言

近期动态

8个月前推送了新的提交到 master 分支,8b8020e...765ad17
11个月前推送了新的 v1.1.1 标签
11个月前推送了新的提交到 master 分支,3e16632...8b8020e
11个月前推送了新的提交到 master 分支,c3761e6...3e16632
11个月前推送了新的提交到 master 分支,5059221...c3761e6
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/buliangrencpp/Header_to_File.git
git@gitee.com:buliangrencpp/Header_to_File.git
buliangrencpp
Header_to_File
Header_to_File
master

搜索帮助