共计 875 个字符,预计需要花费 3 分钟才能阅读完成。

switch记录
switch里不使用break会警告, 可以使用 [[fallthrough]] 来忽略警告
https://learn.microsoft.com/en-us/cpp/code-quality/c26819?view=msvc-170
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0: // case 0 和 case1 这里不会有警告, 隐式回退
case 1:
fn1(); // 从case 1到 case 2的隐式失误, 这里可以加入 [[fallthrough]]
// [[fallthrough]] // 加入这个屏蔽警告
case 2: // Warning C26819.
fn2();
break;
default:
break;
}
}
一句话能说明的记录
c++17的 std::vector.emplace_back 加入了返回对象引用
c++20才加入 char8_t 类型
GetFinalPathNameByHandleW 可以获取文件句柄对应的文件名
std::sort 不能排序std::map 和 std::unordered_map
模拟按键, NtUserInjectKeyboardInput, 必须在gui进程下调用, 参数16个字节, 前4个字节是键代码, 下来4个字节是功能键, 后面两个参数可以为0, 应该是 KEYBDINPUT 结构指针, 定义在winuser.h 头文件里, 第二个参数填1
类方法指针定义, 返回值(调用约定 类名::*类型)(参数), 比如
typedef char&(std::string:: * PFN_at)(size_t);
PFN_at pfn2 = &std::string::at;
// 或者不定义类型, 直接声明变量
char&(std::string:: * 变量名)(size_t) = &std::string::at
调用类指针: 返回值 = (类指针->*方法指针)(参数);
std::string str;
std::string* pStr = &str;
char& ch = (pStr->*变量名)(10);
char& ch = (str.*变量名)(10);
正文完