C++ Again
文章平均质量分 71
C++ knowledge collections
抓饼先生
反正也没人看
展开
-
Android native开发:system/core/libutils
文章目录1. AndroidThreads.h2. Atomic.h3. BitSet.h4. ByteOrder.h5. CallStack.h6. Compat.h7. Condition.h8. Debug.h9. Endian.h10. Errors.h11. FastStrcmp.h12. FileMap.h13. Flattenable.h14. Functor.h15. JenkinsHash.h16. KeyedVector.h17. LightRefBase.h18. List.h19.原创 2023-06-28 11:07:55 · 894 阅读 · 0 评论 -
Android native开发:system/core/base
跨平台支持获取thread id,在Linux上调用gettid()或syscal(__NR_gettid)2)ScopedLockAssertion,为了Clang做线程安全分析的辅助类。还提供一些assertion宏。1)一些thread相关的__attribute__宏定义。临时保存errno,作用域结束后恢复。原创 2023-06-19 17:00:17 · 1052 阅读 · 0 评论 -
Boost笔记 1:下载、编译、安装、测试
如果编译失败或者过程中发现缺少一些依赖库及boost相关模块,安装依赖库后,需要执行这个命令重新检测依赖并生成编译脚本。本地环境是Ubuntu 22.04,需要安装以下依赖库,部分影响boost相关功能的开启,部分影响编译过程。默认安装路径为:/usr/local/include/boost 和 /usr/local/lib/本地环境编译AOSP源码,安装过相关依赖库,除了这里列出的可能还需要其他依赖库,可根据提示安装。1)执行b2命令编译源码,先检测编译依赖,然后根据依赖配置进行编译。原创 2023-05-06 12:24:30 · 2892 阅读 · 1 评论 -
Linux上用syscall()方法调用系统接口
通常,常用的系统调用都有C语言的运行时封装,可以直接调用对应的C函数即可。例如:open、write等都是封装的系统调用。在Linux平台,可以使用syscall()函数调用系统提供的函数。使用系统调用编号调用对应的系统接口。有些系统调用没有提供C函数,只能通过syscall调用。例如:gettid,获取线程id。如果自己开发新增了一些系统接口,也可以使用syscall来调用。(fopen、fwrite是C标准库函数,这些是可移植的。下面例子演示用syscall的方式调用对应的系统调用。原创 2023-04-21 11:41:26 · 1202 阅读 · 0 评论 -
Linux下获取线程id的方法总结
getpid()Linux系统调用,获取进程id,也是主线程id。gettid()Linux系统调用,获取线程id。C运行库没有封装这个接口…用syscall()方式调用。在主线程中,getpid = gettid。直接调用Linux系统调用(即上面的gettid)。pthread库函数,返回pthread中的线程id。这个id不同于gettid()的值。不同的实现可能返回不同的结果。使用这个函数,需要在编译时链接pthread库。原创 2023-04-21 10:35:26 · 3830 阅读 · 0 评论 -
检测并打印C++编译器支持的feature(附Visual Studio 2022和gcc-12测试、对比结果)
C++标准快速迭代,不同的系统平台和编译器对C++各种新功能的支持不同,通过这个程序可以测试所用编译器对各个版本C++的支持情况。另一方面,可以在代码中通过这些宏针对不同版本编写不同的代码分支。源码下面附上Visual Studio 2022的测试结果,基本上在2021年中就把C++23(当时还是草案)大部分功能都支持了。原创 2023-04-19 22:36:04 · 737 阅读 · 0 评论 -
C++模板特化示例和总结
类型参数特化为具体类型。非类型参数,值参数,特化为具体数值。模板参数列表定义在template关键字后中,特化参数列表定义在模板名称(类名或函数名)后的中。对于特化的模板,模板参数列表中去掉特化的参数。在类定义或者函数定义中,用特化的类型名替换对应的通用类型参数名,用具体的特化值,替换对应的非类型参数名。特化的通用类型和非类型参数名,不再有效。原创 2023-04-05 17:49:36 · 747 阅读 · 0 评论 -
C++中的函数类型(1):函数指针
1)首先写一个函数原型的声明,上面的例子就是:2)把函数名用括号括起来,然后把函数名替换成“*类型名”,其他不变。输入参数,只提供类型,参数名可有可无。3)前面加上typedef:大功告成,func_type就是要定义的函数指针类型,可以定义函数指针的变量或参数。通过使用C++新增的decltype可以简化函数指针定义,前提是有一个同类型的函数。如果是开发函数库时,在没有函数的情况下,定义一个接口类型,就只能用上面的方式去定义了。// 例子函数return a+1;原创 2023-02-26 23:14:54 · 1361 阅读 · 0 评论