如何修改VS Code中C++的「创建定义」模板以使用命名空间块?
让VS Code C++扩展自动用命名空间块生成函数定义?
我创建了头文件MyClass.hpp:
#pragma once namespace MyProjectNamespace { class MyClass { public: foo(int i); }; }
此时没有对应的.cpp文件,使用VS Code的C++扩展快速修复(按下Ctrl+.后选择“在MyClass.cpp中创建‘foo’的定义”),生成的MyClass.cpp代码如下:
#include "MyClass.hpp" MyProjectNamespace::MyClass::foo(int i) { }
这种全限定名称的写法不如头文件里的命名空间块直观,虽然手动修正后后续操作会把代码放在命名空间内,但新文件的默认行为很别扭。有没有办法通过设置或修改扩展模板,让新定义在命名空间不存在时自动打开命名空间块?
解决方案
可以通过修改VS Code C++扩展的代码生成模板来实现需求,具体步骤如下:
- 打开VS Code设置页面(快捷键
Ctrl+,),搜索C_Cpp: Code Generation,找到Function Definition选项。 - 点击选项旁的
编辑 in settings.json,替换默认模板内容。
默认的函数定义模板为:
${definition} {${body}}
将其修改为带命名空间块的模板:
namespace ${namespace} { ${definition} {${body}} }
修改后,再使用快速修复生成函数定义时,会自动生成包裹在命名空间块内的代码,示例如下:
#include "MyClass.hpp" namespace MyProjectNamespace { MyClass::foo(int i) { } }
注意事项
- 模板会自动识别函数所属的命名空间,包括嵌套命名空间,都会正确填充层级。
- 此修改会全局生效,所有通过快速修复生成的函数定义都会遵循新模板的格式。
内容的提问来源于stack exchange,提问作者Yksisarvinen
相关产品推荐
相关产品推荐

