Android之性能监控框架
[TOC]
概述文章参考:https://blog.csdn.net/my_business/article/details/40537653
概述memset()是char型初始化函数。
一. 头文件:<string.h> 或 <memory.h>
二. 函数原型:void *memset(void *s, int ch, size_t n);
函数功能:将s所指向的某一块内存中的前n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针,它是对较大的结构体或数组进行清零操作的一种最快方法。
三. 使用:
memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 );
memset(结构体/数组名 , “用于替换的字符“ , 前n个字符 );
函数解释:将s中的前n个字节用ch替换并且返回s
123456789101112131415#include<iostream>//#include&quo ...
Android之性能监控框架
[TOC]
概述文章参考:https://www.cnblogs.com/carle-09/p/12402185.html
概述:
usleep函数usleep功能把进程挂起一段时间, 单位是微秒(百万分之一秒);
头文件: unistd.h
语法: void usleep(int micro_seconds);
返回值: 无
内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的微秒数(us)。
注意:这个函数不能工作在 Windows 操作系统中。
参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。且此函数已被废除,可使用nanosleep。如果延迟时间为几十毫秒(1ms = 1000us),或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
sleep函数简介:在VC中使用带上头文件#include <windows.h>注意:在VC中Sleep中的第一个英文字符为大写的”S”,在标准 ...
Android之性能监控框架
[TOC]
概述概述C++11提供了日期时间相关的库chrono,通过chrono相关的库我们可以很方便的处理日期和时间。c++11还提供了字符串的宽窄转换功能,也提供了字符串和数字的相互转换的库。有了这些库提供的便利的工具类,我们能方便的处理日期和时间相关的转换和格式输出。
chronochrono库主要包含了三种类型:时间间隔Duration、时钟Clocks和时间点Time point。
Durationduration表示一段时间间隔,用来记录时间长度,可以表示几秒钟、几分钟或者几个小时的时间间隔,duration的原型是:
1template<class Rep, class Period = std::ratio<1>> class duration;
第一个模板参数Rep是一个数值类型,表示时钟个数;第二个模板参数是一个默认模板参数std::ratio,它的原型是:
1template<std::intmax_t Num, std::intmax_t Denom = 1> class ratio;
Android之性能监控框架
[TOC]
概述概述函数名称: pow
函数原型: double pow( double x, double y );
函数功能: 计算x的y次幂
所属文件: <math.h>
计算8的2次方:
123double x=8, y=2; double z; z=pow(x,y);
例2:
Android之性能监控框架
[TOC]
概述文章参考:https://www.cnblogs.com/xianghang123/p/3556425.html
cmake 变量引用的方式cmake 常用变量12345CMAKE_BINARY_DIRPROJECT_BINARY_DIR<projectname>_BINARY_DIR
这三个变量指代的内容是一致的,如果是 in source 编译,指得就是工程顶层目录,如果是 out-of-source 编译,指的是工程编译发生的目录。PROJECT_BINARY_DIR 跟其他指令稍有区别,现在,你可以理解为他们是一致的。
12345CMAKE_SOURCE_DIRPROJECT_SOURCE_DIR<projectname>_SOURCE_DIR
这三个变量指代的内容是一致的,不论采用何种编译方式,都是工程顶层目录。
也就是在 in source 编译时,他跟 CMAKE_BINARY_DIR 等变量一致。PROJECT_SOURCE_DIR 跟其他指令稍有区别,现在,你可以理解为他们是一致的。
1CMAKE_CURRENT_SOURC ...
Android之性能监控框架
[TOC]
概述概述add_library命令该指令的主要作用就是将指定的源文件生成链接文件,然后添加到工程中去。该指令常用的语法如下:
123add_library(<name> [STATIC | SHARED | MODULE] [EXCLUDE_FROM_ALL] [source1] [source2] [...])
其实就是将工程编译成依赖库
参数解析:
name:表示库文件的名字,该库文件会根据命令里列出的源文件来创建
STATIC、SHARED和MODULE的作用是指定生成的库文件的类型。
STATIC库是目标文件的归档文件,在链接其它目标的时候使用。SHARED库会被动态链接(动态链接库),在运行时会被加载。MODULE库是一种不会被链接到其它目标中的插件,但是可能会在运行时使用dlopen-系列的函数。默认状态下,库文件将会在于源文件目录树的构建目录树的位置被创建,该命令也会在这里被调用。
link_directories该指令的作用主要是指定要链接的库文件的路径,该指令有时候不一定需要。因为find_pack ...
Android之性能监控框架
[TOC]
概述文章参考:https://blog.csdn.net/10km/article/details/51731959
概述在cmake脚本中,设置编译选项可以通过add_compile_options命令,也可以通过set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。使用这两种方式在有的情况下效果是一样的,但请注意它们还是有区别的:
add_compile_options命令添加的编译选项是针对所有编译器的(包括c和c++编译器),
而set命令设置CMAKE_C_FLAGS或CMAKE_CXX_FLAGS变量则是分别只针对c和c++编译器的。
例如下面的代码:
12345#判断编译器类型,如果是gcc编译器,则在编译选项中加入c++11支持if(CMAKE_COMPILER_IS_GNUCXX) add_compile_options(-std=c++11) message(STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX)
使用add_co ...
Android之性能监控框架
[TOC]
文章转自:https://www.ethsonliu.com/2020/04/noexcept.html
概述C++98 中的异常规范(Exception Specification)throw 关键字除了可以用在函数体中抛出异常,还可以用在函数头和函数体之间,指明当前函数能够抛出的异常类型,这称为异常规范,有些教程也称为异常指示符或异常列表。请看下面的例子:
1double func1 (char param) throw(int);
函数 func1 只能抛出 int 类型的异常。如果抛出其他类型的异常,try 将无法捕获,并直接调用 std::unexpected。
如果函数会抛出多种类型的异常,那么可以用逗号隔开,
1double func2 (char param) throw(int, char, exception);
如果函数不会抛出任何异常,那么只需写一个空括号即可,
1double func3 (char param) throw();
同样的,如果函数 func3 还是抛出异常了,try 也会检测不到,并且也会直接调用 std::unexpect ...
Android之性能监控框架
[TOC]
概述·
Android之性能监控框架
[TOC]
虚函数概念定义一个函数为虚函数,不代表函数为不被实现的函数。
定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。
定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。
12345678910111213141516171819202122class A{public: virtual void foo() { cout<<"A::foo() is called"<<endl; }};class B:public A{public: void foo() { cout<<"B::foo() is called"<<endl; }};int main(void){ A *a = new B(); a->foo(); // 在 ...