C++ 编译期获取类名
原理 获取到各个编译器下的原有名字,msvc下为__FUNCSIG__,gcc和clang下为__PRETTY_FUNCTION__ 进行拆分截断 【缺陷】并不能保证各个编译器下的字符串完全一致,包括但不限于多或少一个空格,逗号的位置等等(msvc还会加上class struct union关键字!)相关讨论见 https://github.com/alibaba/yalant...
原理 获取到各个编译器下的原有名字,msvc下为__FUNCSIG__,gcc和clang下为__PRETTY_FUNCTION__ 进行拆分截断 【缺陷】并不能保证各个编译器下的字符串完全一致,包括但不限于多或少一个空格,逗号的位置等等(msvc还会加上class struct union关键字!)相关讨论见 https://github.com/alibaba/yalant...
切换头文件/源文件(F4) vscode: c++插件搜索switchheadersource(注意不加空格,这样自带的c++和clangd都能搜索出来) visual studio: 搜索切换标题代码文件
禁用microsoft c++插件的提示 打开vscode的设置界面,搜索c++ engine,选择C_Cpp.intelliSenseEngine,设置为disabled 对应的settings.json设置为 { "C_Cpp.intelliSenseEngine": "disabled" } 添加clangd参数 ...
cmake 输出相关信息 message(STATUS "CMake version: ${CMAKE_VERSION}") message(STATUS "CMake C compiler: ${CMAKE_C_COMPILER}") message(STATUS "CMake CXX compiler: ${CMAKE_CXX_COMPILER}") message(ST...
起因: 看到这个博客里写道这样写进行了初始化操作 auto buffer_size = 5*1024*1024; auto buffer = std::make_unique<char[]>(buffer_size); 评论区jajuju提出可以使用创建buffer 其实这里的情况是 make_unique 里用的 new 表达式是 new T[n]() ,对于 cha...
msvc 源码见https://github.com/microsoft/STL/blob/main/stl/inc/functional 预备知识 参数类型,可以分为一元(unary)和二元(binary),这个概念很重要,gcc的实现里也用到。 可以看到msvc里定义了三个_Arg_types:无参数类型;接受一个参数,一元;接受两个参数,二元。 并且_Arg_types没有成员变量...
如何给vcpkg提pr 笔者偶尔会给vcpkg提交一些包的更新,这里记录下遇到的问题,与大家分享,如能起到一点点帮助那我就更开心了。 首先是github提pr的基本流程,这里假设大家都已经知道了,此为前提。 更新包 更新版本 以fmt为例,我们这次的目的要更新fmt的版本号到11.0.2 在vcpkg的路径ports文件夹下找到要更新的包,为例,那么我们就要找到文件夹vcpkg/p...
参考https://pip.pypa.io/en/stable/reference/requirement-specifiers/ # --------------------------------- # System platform value # --------------------------------- # AIX "aix...
在windows下使用cythonize可以将py文件编译成pyd,这样就完成了初步的python代码加密工作 使用前需要先安装Cython pip install Cython 然后对py文件执行命令cythonize -i -3 --directive always_allow_keywords=true xxx.py 这里有一个要注意的点: –directive always_a...
DP 数位DP 是什么 数位是指把一个数字按照个、十、百、千等等一位一位地拆开,关注它每一位上的数字。如果拆的是十进制数,那么每一位数字都是 0~9,其他进制可类比十进制 为什么 为什么要一位位的判断?因为对一个区间内的数的统计,往往有相似的地方。比如 [1000, 1999] 和 [2000, 2999] 只是第一位发生了变化,后三位变化类似,那么只需要后三位的变化能通用化,那么不就可以...