1. 编辑界面右侧显示80字符分割线
界面左上角选择"文件->首选项->设置",进入设置界面,选择"文本编辑器->Rulers->在setting.json中编辑",或者直接所搜rulers
2. 添加注释头
{
"add brief":
{
"prefix": "@brief",
"body": [
"",
"/**",
" * @brief : $1",
" */",
"$2",
],
},
"add enum template":
{
"prefix": "@enumTemplate",
"body": [
"",
"/**",
" * @brief : 错误代码定义",
" */",
"typedef enum",
"{",
" ERR_SUCCESS = 0, //< 成功",
" ERR_FAILED = -1, //< 失败",
" ERR_INVALID_PARAMETER = -1000, //< 无效参数",
" ERR_NOT_INITED, //< 未初始化",
" ERR_INITED, //< 已初始化$1",
"} ErrCode;",
""
],
},
"Add File Header": {
"prefix": "@fileHader",
"body": [
"/**"
" * @file : ${TM_FILENAME}",
" * @brief : $1",
" * @version : V1.0.0",
" * @date : ${CURRENT_YEAR}-${CURRENT_MONTH}-${CURRENT_DATE}",
" */",
"#ifndef __${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H__",
"#define __${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H__",
"",
"/*================================= Includes =================================*/",
"$2",
"",
"/*================================= Defines ==================================*/",
"$3",
"",
"/*============================= Static Functions =============================*/",
"$4",
"",
"/*============================= Public Functions =============================*/",
"$5",
"",
"#endif /* __${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H__ */",
],
"description": "Add file describe"
},
"add func header":{
"prefix": "@funcHeader",
"body": [
"",
"/**",
" * @brief : $1",
" * @param [$2] $3 : $4",
" * @param [$5] $6 : $7",
" * @return 返回错误码ErrCode",
" */",
]
},
"check conditon": {
"prefix": "@checkConditon",
"body": [
"#define CHECK_CONDITION(condition, error_code, error_message) \\",
" do { \\",
" if (!(condition)) { \\",
" $1fprintf(stderr, \"Error: %s\\n\", error_message); \\",
" return error_code; \\",
" } \\",
" } while (0) $2",
"$3",
]
},
"check param": {
"prefix": "@checkParam",
"body": [
"#define CHECK_PARAM(param, error_code) \\",
" do { \\",
" if (!(param)) { \\",
" $1fprintf(stderr, \"Error: invalid param\\n\"); \\",
" return error_code; \\",
" } \\",
" } while (0) $2",
"$3",
]
},
"select timeout": {
"prefix": "@select",
"body": [
"#include <sys/select.h>",
"#include <sys/time.h>",
"#include <unistd.h>",
"$1",
"/**",
" * @brief : select_with_timeout",
" * @param [in] fd : 文件描述符",
" * @param [in] timeout_ms : 超时时间(ms)",
" * @return true : 文件描述符准备好",
" * @return false : 超时或出错",
" */",
"bool select_with_timeout(int fd, int timeout_ms) {",
" fd_set read_set;",
" FD_ZERO(&read_set);",
" FD_SET(fd, &read_set);",
"",
" // 设置超时时间",
" struct timeval tv;",
" tv.tv_sec = timeout_ms / 1000;",
" tv.tv_usec = (timeout_ms % 1000) * 1000;",
"",
" // 调用 select 函数",
" int ready = ::select(fd + 1, &read_set, nullptr, nullptr, &tv);",
"",
" if (ready == -1) { ",
" $1fprintf(stderr, \"Error: %s\\n\", strerror(errno));",
" return false;",
" }",
"",
" // 检查文件描述符是否准备好",
" return ready > 0 && FD_ISSET(fd, &read_set);",
"}",
"",
]
},
"delete class functions": {
"prefix": "@deleteClassFunctions",
"body": [
"$1(const $1 &) = delete;",
"$1($1 &&) = delete;",
"$1 &operator=(const $1 &) = delete;",
"$1 &operator=($1 &&) = delete;",
"",
]
},
"class define": {
"prefix": "@class",
"body": [
"class $1"
"{",
"public:",
" $1() = default;",
" ${2:virtual }~$1() = default;",
"",
" $1(const $1 &) = delete;",
" $1($1 &&) = delete;",
" $1 &operator=(const $1 &) = delete;",
" $1 &operator=($1 &&) = delete;",
"",
"protected:",
"",
"private:",
" $3",
"};",
"$4"
]
},
"time keeper": {
"prefix": "@timeKeeper",
"body": [
"#include <iostream>",
"#include <chrono>",
"#include <string>",
"",
"enum class TimeUnit {",
" Microseconds,",
" Milliseconds,",
" Seconds",
"};",
"",
"/**",
"* @brief : 计时器类",
"*/",
"class TimeKeeper {",
"public:",
" TimeKeeper(){",
" start();",
" }",
"",
" // 开始计时",
" void start() {",
" start_ = std::chrono::high_resolution_clock::now();",
" }",
"",
" // 获取经过的时间",
" double getElapsed(TimeUnit unit = TimeUnit::Milliseconds) {",
" end_ = std::chrono::high_resolution_clock::now();",
"",
" std::chrono::duration<double> elapsed;",
" switch (unit) {",
" case TimeUnit::Microseconds:",
" elapsed = std::chrono::duration_cast<std::chrono::microseconds>(end_ - start_);",
" break;",
" case TimeUnit::Milliseconds:",
" elapsed = std::chrono::duration_cast<std::chrono::milliseconds>(end_ - start_);",
" break;",
" case TimeUnit::Seconds:",
" elapsed = std::chrono::duration_cast<std::chrono::seconds>(end_ - start_);",
" break;",
" default:",
" std::cerr << \"Error: Unsupported unit.\\n\";",
" return -1.0;",
" }",
" return elapsed.count();",
" }",
"",
" // 打印经过的时间",
" void print(const std::string& message, TimeUnit unit = TimeUnit::Milliseconds) {",
" double duration = getElapsed(unit);",
" if (duration >= 0.0) {",
" switch (unit) {",
" case TimeUnit::Microseconds:",
" std::cout << message << \": \" << duration << \" us\\n\";",
" break;",
" case TimeUnit::Milliseconds:",
" std::cout << message << \": \" << duration << \" ms\\n\";",
" break;",
" case TimeUnit::Seconds:",
" std::cout << message << \": \" << duration << \" s\\n\";",
" break;",
" default:",
" std::cerr << \"Error: Unsupported unit.\\n\";",
" break;",
" }",
" }",
" }",
"",
"private:",
" std::chrono::time_point<std::chrono::high_resolution_clock> start_;",
" std::chrono::time_point<std::chrono::high_resolution_clock> end_;",
"};"
]
},
}