如何通过结构体成员地址获取父地址
有如下结构体:
1 | struct Test { |
在只知道成员变量 y 地址的情况下,如何获取到结构体的首地址?
有如下结构体:
1 | struct Test { |
在只知道成员变量 y 地址的情况下,如何获取到结构体的首地址?
如果界面所指定的字体在用户系统上未安装,则会自动降级到系统默认字体,这样会导致界面显示异常或达不到预期效果。
对于特殊字体我们通常会集成到软件安装包内,但对于汉字这样的语言,它的文字比较多,因此字体文件比较大,如果集成到安装包内会导致安装包体积变大,所以对于类似中文这样字符比较多的语言字体,我们通常会选择系统自带的字体。
而不同操作系统(如Windows和macOS)所自带的字体不一样,甚至同一操作系统不同的版本(如Windows 7和Windows 11)自带的字体也不一样,因此在选择采用什么字体前,需要弄清我们应用程序支持的操作系统所自带的字体都有哪些,才能更好的做选择。
操作系统的新版本通常只会新增字体,不会移除老的字体。
本文主要介绍如何在 Node-API 中实现不同类型的接口,主要有下面几种类型:
ABI 是 Application Binary Interface 的缩写,当我们以二进制形式(非源码形式)发布我们的动态库时,就需要关心ABI兼容(也称二进制兼容)。
对于静态库,更新静态库始终都需要该库的使用方重新编译,因此不存在ABI兼容的说法。
在使用 Electron 开发客户端时,如果现有 Node 模块所提供的功能无法满足需要,我们可以使用 C++ 开发自定义的 Node 模块,也称插件(addon)。
Node.js 插件的扩展名为 .node,是二进制文件,其本质上是通过动态链接库(.dll 或 .so)重命名而来。
spdlog是一个高性能 C++日志库,可以支持仅头文件(header-only)模式使用。
官网地址:
spdlog 是线程安全的,但不是进程安全的,可以多个线程同时使用一个 spdlog 对象输出日志,但不能多个进程同时往一个文件写入日志。
在 spdlog 内部使用fmt进行字符串的格式化,因此 spdlog 字符串格式的方式与 fmt 库相同,如:
1 | spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}", 42); |
在 C/C++中涉及的整数相关的类型大致有如下几种:
SetParent是Windows提供的设置窗口父窗体的API,函数原型比较简单:
1 | HWND SetParent( |
在 Windows 系统中,我们按下 Win+D 快捷键执行“显示桌面”时,会将桌面上的所有窗口都最小化到任务栏,再次按下还会还原窗口状态。如果在执行显示桌面操作时,有些窗口仍然保持显示状态,不被最小化,这些窗口称之为逃脱了显示桌面指令。
实现逃脱显示桌面的方式有三种,每种方式有不同的应用场景。