Visual Studio Code(VScode)自动生成头文件的 #ifndef #define #endif

一、效果

很多编辑器或者IDE在创建头文件后会自动生成 #ifndef 防止该头文件被重复引用,vscode 没有自带这个功能,需要通过自定义添加。
在这里插入图片描述

二、步骤

  • Shift+Ctrl+P ,打开命令面板
    在这里插入图片描述

  • 输入snippets,找到 Preferences:Configure User Snippets
    在这里插入图片描述

  • 选择 新建全局代码片段文件...

  • 输入 c_cpp_header (该名称可以自定义),会生成 c_cpp_header.code-snippets 配置文件,默认如下:

    {
    	// Place your 全局 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and 
    	// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope 
    	// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is 
    	// used to trigger the snippet and the body will be expanded and inserted. Possible variables are: 
    	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. 
    	// Placeholders with the same ids are connected.
    	// Example:
    	// "Print to console": {
    	// 	"scope": "javascript,typescript",
    	// 	"prefix": "log",
    	// 	"body": [
    	// 		"console.log('$1');",
    	// 		"$2"
    	// 	],
    	// 	"description": "Log output to console"
    	// }
    }
    
  • 按照上面 Example 下面的格式在 { } 里面添加以下代码:

    "C C++ Header": {
    	"scope": "c, cpp",
    	"prefix": "header",
    	"description": "Add #ifndef, #define and #endif",
    	"body": [
    		"#ifndef _${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H_",
    		"#define _${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H_",
    		"",
    		"$0",
    		"",
    		"#endif // _${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H_"
    	]
    }
    
  • 使用:新建一个头文件,输入 header,回车即可生成 :
    在这里插入图片描述

  • 生成的格式如下 :
    在这里插入图片描述

参考:

### 配置或使用插件在VSCode自动生成C/C++头文件 为了实现在Visual Studio Code (VSCode)自动为C/C++项目生成头文件的功能,通常依赖于特定扩展以及一些辅助工具。然而,值得注意的是官方并没有提供直接支持此功能的内置机制。 #### 使用`cpptools`扩展配合脚本实现自动化 尽管VSCode本身不自该特性,但是可以通过安装Microsoft推出的[C/C++](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) 扩展来增强编辑体验,并结合外部编写的Python或其他语言的小型实用程序完成这项工作[^1]。 对于希望简化流程的情况,开发者可以选择编写简单的模板引擎或者利用现有的开源解决方案如[header-generator](https://github.com/mortbauer/header-generator),它是一个基于Node.js的应用程序,可以根据源码结构创建相应的`.h`文件。 #### 编写自定义任务 另一种方法是在项目的根目录下设置一个构建任务(tasks.json),通过调用gcc/g++预处理器选项(-MMD,-MP)获取依赖信息并解析成所需的声明语句形式保存到对应的头文件里: ```json { "version": "2.0.0", "tasks": [ { "label": "generate headers", "type": "shell", "command": "./scripts/gen_headers.sh ${workspaceFolder}", "group": { "kind": "build", "isDefault": true }, "problemMatcher": [] } ] } ``` 这里假设存在名为gen_headers.sh的Shell脚本来处理实际的工作逻辑,比如读取指定路径下的所有.cpp/.cxx文件并将它们转换为目标格式存储起来。 #### 利用第三方库和服务 除了上述方案外,还可以考虑集成更复杂的系统级服务或是采用专门设计用来解决这类问题的产品,例如Doxygen虽然主要用于文档化API接口描述,但也具备一定的能力帮助整理和维护大型工程中的头文件关联关系[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值