C++
çheryアΔan
职业 专业
展开
-
结构体 字节对齐 __align() __attribute((aligned (n))) #pragma pack(n)
#pragma pack(4)struct mystu{ char a ; int b ;};#pragma pack()GCC推荐的对齐指令如下:_attribute_((packed))和_attribute_((aligned(n))) armcc一般是专门针对arm芯片开发时用的编译器,语法除了遵守标准C语法外,还支持arm体系下特有的语法规则。gcc应用...转载 2018-07-17 11:17:18 · 3354 阅读 · 0 评论 -
QT(1)——对象模型、对象树与析构函数
Qt Parent在Qt中创建对象的时候会提供一个Parent对象指针,下面来解释这个parent到底是干什么的。QObject是以对象树的形式组织起来的。当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针。这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会...原创 2019-07-27 17:45:09 · 1097 阅读 · 0 评论 -
C/C++——extern 、extern "C"、数组名和指针名的区别。
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。也就是说extern有两个作用,extern “C”当它与"C"一起连用时,如: extern “C” void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名,而不是...原创 2019-07-06 21:05:40 · 695 阅读 · 0 评论 -
C/C++——浮点数相等
float,double分别遵循R32-24,R64-53的标准,他们的位数分别是23,52,即误差在2-23,2-52;所以float的精度误差在1e-6,double精度误差在1e-15 。所以要判断一个单精度浮点数:则是if( fabs(f_float) <= 1e-6);要判断一个双精度浮点数:则是if( fabs(d_double) <= 1e-15 );判断...原创 2019-07-06 21:05:04 · 2953 阅读 · 0 评论 -
C/C++——函数调用栈
ARM体系ARM微处理器共有37个寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R0~R15、一个或两个状态寄存器都是可访问的。有三个特殊的通用寄存器:寄存器R13:在ARM指令中常用作堆栈指针SP寄存器R14:也称作子程序连接寄存器(Subroutine ...原创 2019-07-01 19:47:44 · 1146 阅读 · 0 评论 -
Sqlite3 时间格式定制 毫秒数 两位小数
#include <ctime> #include <sys/time.h> struct timeval tv; char buf2[64]; gettimeofday(&tv, NULL); char buf[128] = {0}; strftime(buf2, sizeof(buf)-1...原创 2018-07-17 11:27:18 · 1846 阅读 · 0 评论 -
C/C++——构造函数中变量和成员的定义顺序、委托构造函数
一、先执行静态成员的构造函数,如果静态成员只是在类定义中声明了,而没有实现,是不用构造的。必须初始化后才执行其构造函数。二、任何抽象基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)三、任何虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)四、任何非虚拟基类的构造函数按照它们被继承的顺序构造(不是初始化列表中的顺序)五、任何成员对象的构造函数按照它们声明的顺...原创 2019-07-27 18:02:24 · 1705 阅读 · 0 评论