随笔分类 -  C++

摘要:无论是GCC还是MSVC都提供了属性语法,而从C++11起,stl也提供了属性语法可以适用于不同的系统环境。 1. GCC和MSVC的属性语法 GCC中的属性语法即__attribute__,详细的介绍参阅我以前的博客:https://www.cnblogs.com/Asp1rant/p/14921 阅读全文
posted @ 2021-11-14 21:26 Asp1rant 阅读(175) 评论(0) 推荐(0) 编辑
摘要:C++11中新增了alignof和alignas两个关键字用于数据对齐。alignof可以用于获取类型的对齐字节长度,alignas可以用于改变类型的默认对齐字节长度。 Before C++11 在c++11之前,可以通过下面的宏实现对齐。 1 template<class T> struct al 阅读全文
posted @ 2021-11-08 21:53 Asp1rant 阅读(422) 评论(0) 推荐(0) 编辑
摘要:一. 概述 noexcept 是C++11中的特性,既是一个说明符,也是一个运算符。能够说明函数是否会抛出异常,如下: 1 struct X { 2 3 int f() const noexcept { 4 return 58; 5 } 6 7 void g() noexcept {} 8 }; 9 阅读全文
posted @ 2021-11-03 20:14 Asp1rant 阅读(2040) 评论(0) 推荐(0) 编辑
摘要:本文介绍如何将微软框架的C++代码(Win32)编译成node-addon,使之可以通过Nodejs调用。 环境: Nodejs版本:12.22 (32bit) VS2019 1. 编译文件的编写 无论是binding.gyp,还是写CMake-js,都需要包含msvc相关依赖 1.1. bindi 阅读全文
posted @ 2021-10-25 13:04 Asp1rant 阅读(315) 评论(0) 推荐(0) 编辑
摘要:本文介绍在使用Node-addon-api时,能够实现用C++调用Javascript的几种方式。 1. Callback 比较简单,示例: Napi::Function cb = info[0].As<Napi::Function>(); cb.Call(env.Global(), { Napi: 阅读全文
posted @ 2021-07-19 17:29 Asp1rant 阅读(1305) 评论(0) 推荐(1) 编辑
摘要:用C++写了个定时器。 项目的需求是原来Windows的程序,用到了windows APi的 SetTimer 和 KillTimer 来创建和销毁定时器,现在要移植代码到Linux,实现与其相似的功能。 首先创建一个Timer类,管理单个定时器。 1 typedef std::function<v 阅读全文
posted @ 2021-06-13 20:26 Asp1rant 阅读(1723) 评论(0) 推荐(0) 编辑
摘要:本文介绍Emscripten - 用于将C/C++的代码向Javascript转换。可用于如这样一个应用场景:有一份历史代码用C/C++实现,开发者需要用Js调用其中的代码。 介绍Emscripten之前,本文梳理asm.js和WebAssembly的相关知识。 一. asm.js 官方网站:htt 阅读全文
posted @ 2021-05-05 17:14 Asp1rant 阅读(5912) 评论(1) 推荐(1) 编辑
摘要:std::tuple std::tuple是C++11中引入的数据结构,可以将不同类型的值放到一起,类似python中的tuple 常用方法: std::get 按索引获取值,如类型不是const,也可以用来设置值,如:std::get<0>(tuple) = value; std::tuple_s 阅读全文
posted @ 2020-12-02 17:32 Asp1rant 阅读(550) 评论(0) 推荐(0) 编辑
摘要:一. 仿函数(Functor) 仿函数(functor)又称为函数对象(function object)是一个能行使函数功能的类。仿函数的语法几乎和我们普通的函数调用一样,不过作为仿函数的类,都必须重载operator()运算符,举个例子: 1 class Func{ 2 public: 3 voi 阅读全文
posted @ 2020-11-12 19:12 Asp1rant 阅读(623) 评论(0) 推荐(0) 编辑
摘要:用C++写了一个链地址型的Hash表 参考博客:https://blog.csdn.net/Bob__yuan/article/details/100016473, https://blog.csdn.net/weixin_38169413/article/details/81612307 Hash 阅读全文
posted @ 2020-10-12 22:04 Asp1rant 阅读(439) 评论(0) 推荐(0) 编辑
摘要:参考自: https://www.runoob.com/regexp/regexp-tutorial.html https://www.runoob.com/python/python-reg-expressions.html 在线测试RE网站: https://regexr.com/ https: 阅读全文
posted @ 2020-09-23 17:12 Asp1rant 阅读(757) 评论(0) 推荐(0) 编辑
摘要:参考自:https://www.cnblogs.com/jimodetiantang/p/9016826.html 1.概述 Lambda是c++11中引入的特性,为创建函数提供一种新的方式,用于定义和创建匿名的函数,以简化编程工作。 关于Lambda需要知道: Lambda 函数可以引用在它之外声 阅读全文
posted @ 2020-07-02 21:24 Asp1rant 阅读(241) 评论(0) 推荐(0) 编辑
摘要:6.1 使用char[]时,保证长度不要超过上限 1. 使用cin时,用string接收输入值以替代char[] 2. 使用string接受char[]时,将char[]长度赋值给string的第二参数 6.2 堤防用空指针创建string 1. std::getenv会可能返回空的char*,不要 阅读全文
posted @ 2020-06-01 19:31 Asp1rant 阅读(154) 评论(0) 推荐(0) 编辑
摘要:第五章 容器 5-1 确保容器索引在范围内 1. 用std::size_t代替int 2. 用模板函数接受参数,进行参数类型转换 3. 使用std::vector时,用at代替[]索引 4. 使用迭代器注意不要超限 5-2 用容器的有效引用,指针和迭代器 书中此章含有表格,详见 P164 5-3 用 阅读全文
posted @ 2020-04-29 19:14 Asp1rant 阅读(154) 评论(0) 推荐(0) 编辑
摘要:4.1 使用枚举类型的注意事项 1.将int类型转换成枚举类型之前,需要检查int数值是否超出枚举范围 2.用enum class替代enum (Mentionded in Modern Effective C++) 3.用enum EnumType : int 定义枚举类型 阅读全文
posted @ 2020-04-17 16:34 Asp1rant 阅读(112) 评论(0) 推荐(0) 编辑
摘要:std::future std::future期待一个返回,从一个异步调用的角度来说,future更像是执行函数的返回值,C++标准库使用std::future为一次性事件建模,如果一个事件需要等待特定的一次性事件,那么这线程可以获取一个future对象来代表这个事件。异步调用往往不知道何时返回,但 阅读全文
posted @ 2020-04-09 22:41 Asp1rant 阅读(195) 评论(0) 推荐(0) 编辑
摘要:3-1不要对边缘效应的调用顺序产生依赖 Side effect: Modifying an object (如 ++,--) Calling a library IO function Accessing a volatile-qualified value 避免在同一行代码中调用多次变量且含++等 阅读全文
posted @ 2020-04-07 17:17 Asp1rant 阅读(179) 评论(0) 推荐(0) 编辑
摘要:sei cert c++ 提供了一些安全c++编程的tips, 本文参照2016标准 2-1 弃用C语言的不定参函数 1.用template代替C语言的不定参函数 2.用std::enable_if处理变参长度为0的情况 2-2 下划线命名规则 1.不用下划线作头文件的宏 2.用户自定义operat 阅读全文
posted @ 2020-03-31 19:40 Asp1rant 阅读(299) 评论(0) 推荐(0) 编辑
摘要:一:C语言中的右值概念 左值:既能出现在等号左边,又能出现在等号右边的变量(或表达式),可以寻址 右值:智能出现在等号右边的变量或表达式,无法寻址 例如:a = 10, a是左值,10就是右值 二:右值引用 rValue reference C++11中用&&代表右值引用,左值引用只能引用左值,右值 阅读全文
posted @ 2020-03-21 16:19 Asp1rant 阅读(182) 评论(0) 推荐(0) 编辑
摘要:4:std::weak_ptr std::weak_ptr从shared_ptr产生,特性: std::weak_ptr 是一种智能指针,它对被 std::shared_ptr 管理的对象存在非拥有性(“弱”)引用。在访问所引用的对象前必须先转换为 std::shared_ptr。 std::wea 阅读全文
posted @ 2020-03-15 21:49 Asp1rant 阅读(134) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示