
C/C++
amwha
跟着感觉走
展开
-
any 实现
#ifndef ANY_H#define ANY_H#include <iostream>#include <string>#include <memory>#include <typeindex>#include <type_traits>#include <typeinfo>class Any{public: Any(void) : m_tpIndex(std::type_index(typeid转载 2022-01-21 16:45:30 · 267 阅读 · 0 评论 -
嵌入式系统通信库设计
1 通信库设计需求解决芯片间的数据交互超时重发重发次数控制校验代码共用代码可以动态静态库的形式适应于裸机可以创建多个实例2 应用层数据结构由于裸机一般没有动态内存分配,所以数据长度是固定分配typedef struct tagMessage{ XUSHORT paramLen; //指的是param的长度 XUCHAR type; //消息类型 XUCHAR src;//消息源模块 XUINT seq;//流水号 XUINT id; //原创 2022-01-15 18:15:19 · 229 阅读 · 0 评论 -
opencv 实现多项式曲线拟合
基本原理:幂函数可逼近任意函数。上式中,N表示多项式阶数,实际应用中一般取3或5;假设N=5,则:共有6个未知数,仅需6个点即可求解;可表示为矩阵方程:Y的维数为[R*1],U的维数[R * 6],K的维数[6 * 1]。R> 6时,超定方程求解:下面是使用C++实现的多项式拟合的程序,程序中使用opencv进行矩阵运算和图像显示。程序分别运行了N=3,5,7,9时的情况,结果如下:#include <opencv2\opencv.hpp>#include转载 2021-06-12 14:29:01 · 2859 阅读 · 0 评论 -
linux下coredump使用gdb定位bug
前提是保证运行环境里有gdb,而且开发环境里有gcc编译器1、 使能coredump生成的coredump文件的大小是可以设置的,这里使用 unlimited 不限制,如果设置成0,则功能没有开启,不生成dump文件可以使用如下命令来改变大小,一般不要设置太大,如果dump多次文件会很大,导致磁盘空间不够用ulimit -C 10242、设置dump文件生成的路径这里我们把生成路径设置到了源码目录,文件名是:core.xxxxxxx。3、 编一段有问题的代码出问题的在第7行4 、编原创 2021-06-10 23:10:13 · 462 阅读 · 1 评论 -
QTableView 例四(基于 QSqlTableModel)
1、 checkbox 代理将checkbox处理成单选的效果#ifndef CHECKBOXDELEGATE_H#define CHECKBOXDELEGATE_H#include <QStyledItemDelegate>#include <QCheckBox>class CheckBoxDelegate : public QStyledItemDelegate{ Q_OBJECTpublic: CheckBoxDelegate(QObject *原创 2021-05-30 20:44:28 · 536 阅读 · 0 评论 -
std::bind与std::function
1. std::functionstd::function 是一个可调用对象包装器,是一个类模板,可以容纳除了类成员函数指针之外的所有可调用对象,它可以用统一的方式处理函数、函数对象、函数指针,并允许保存和延迟它们的执行。定义格式:std::function<函数类型>。std::function可以取代函数指针的作用,因为它可以延迟函数的执行,特别适合作为回调函数使用。它比普通函数指针更加的灵活和便利。2. std::bind可将std::bind函数看作一个通用的函数适配器,它接受原创 2021-05-26 22:05:13 · 498 阅读 · 1 评论 -
Qt 信号槽返回值
1、定义线程间交互数据#ifndef MESSAGE_H#define MESSAGE_H#include <QMetaType>#include <QVariant>struct Message{ QVariant data;};Q_DECLARE_METATYPE(Message)#endif // MESSAGE_H2、 业务类#ifndef BUSINESS_H#define BUSINESS_H#include <QObject&g原创 2021-05-18 21:36:47 · 2652 阅读 · 0 评论 -
QTableView 例三(代理)
1、 QComboBox 代理#pragma once#include <QStyledItemDelegate>class MyDelegate : public QStyledItemDelegate{ Q_OBJECTpublic: MyDelegate(QObject *parent = 0); QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,原创 2021-05-14 22:25:11 · 1796 阅读 · 0 评论 -
QTableView 例二(基于 QSqlQueryModel)
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QTableView>#include <QSqlQueryModel>#include <QDebug>#include <QSqlError>#include <QSqlQuery>#include <QHeaderView>#include <QComboBox>#include &原创 2021-05-05 20:52:18 · 305 阅读 · 0 评论 -
QT QTableView QTableWidget 复杂表头(多行表头) 、(冻结、固定特定的行)
demo下载地址在最后 ================================分割线====================================== 对于所有前端开发人员会留意到,我们在开发过程中对于表格使用频率还是挺高的,使用QT框架开发时候我们使用QTableView或者QTableWidget创建表格。 其中表格分为 表格头与表格体: 对于简单地表格,我们可以...转载 2021-04-18 09:44:25 · 1260 阅读 · 0 评论 -
QTableView 例一(基于 QStandardItemModel)
工程文件QT += core guiQT += sqlgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# The following define makes your compiler emit warnings if you use# any Qt feature that has been marked deprecated (the exact warnings# depend on your原创 2021-04-18 00:05:11 · 377 阅读 · 0 评论 -
函数模版与类模版
#include <QCoreApplication>#include <QDebug>template <class T>T My_Max(T a,T b){ return a>b?a:b;}template <typename T>bool IsBig(T a, T b){ return a>b?true:false;}template <class T,class O>class Poin原创 2021-04-10 23:47:20 · 133 阅读 · 0 评论 -
C++静态库与动态库
C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.转载 2021-04-10 23:33:45 · 183 阅读 · 0 评论 -
Map以自定义结构体做为key
#include <QCoreApplication>#include <QDebug>#include <QMap>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); struct CustomKey{ int a; int b; QString c; bool operator <(cons原创 2021-04-06 23:05:13 · 507 阅读 · 0 评论 -
QxOrm 例一
1、 demo目录结构include 、inl、 lib三个目录是从qxorm的目录拷贝过来的目录要这样放,方便添加库工程:2、precompiled.h 文件拷贝的一个test目录下的一 例子,这个文件必须要#ifndef _QX_BLOG_PRECOMPILED_HEADER_H_#define _QX_BLOG_PRECOMPILED_HEADER_H_#include <QxOrm.h>#include "export.h"/*// To resolve原创 2021-04-03 11:57:24 · 767 阅读 · 0 评论 -
QT 编译报错:error: no macro name given in #define directive
解决:在pro文件里写的注释格式不对DEFINES += _BUILDING_QX_AMWHA //[//]这个用错了,pro里的注释一般用#号原创 2021-04-03 11:06:33 · 1225 阅读 · 0 评论 -
QT 的QDebug无法输出日志
1、 工程文件 proCONFIG += console c++11 # 可以配置多个,但是每个之间要有空格,不建议一行配置多个如果加了console后还不能输出,有可能是 禁止输出了DEFINES+= QT_NO_DEBUG_OUTPUT在终端输出有时候想在一个徭...原创 2021-03-27 12:57:32 · 914 阅读 · 0 评论 -
linux下运行程序时无法找到库
问题./test: error while loading shared libraries: libcyusbserial.so: cannot open shared object file: No such file or directory 解决方案一# echo “/home/root/workspace/cyusblib” >> /etc/ld.so.conf # 把库的路径添加到ld.so.conf文件末尾# ldconfig # 使之生效解决方案二:配置 LD_原创 2021-03-22 10:43:51 · 367 阅读 · 0 评论 -
SDK开发注意事项
在开发一个软件项目时,为了尽可能复用已有组件,降低后续维护的成本,常常需要进行模块化设计——将一部分较为独立的功能抽象出来,封装成 sdk 供调用方使用。 如果你是一名 C++ 开发者,在为调用方开发 C++ 版本的 sdk 时,需要注意哪些问题呢?本文给你几个小的 tips (从而减少被 sdk 调用方打的概率)。一、确定 sdk 的使用形式一般来说,c++ sdk 有 2 种使用形式:header-only 型header-files + libraryheader-only 型的 c++ s转载 2021-03-22 10:12:17 · 1005 阅读 · 0 评论 -
C++ 三大特性之封装,继承,多态
1 从C到C++在嵌入式的软件开发过程中大多是使用C这种面向过程的语言来开发,从效率上来说C语言已经非常高了,使用在硬件资源比较紧张的嵌入式系统来说是最好不过的选择了,随着硬件性能的提升,以及硬件价格的下降,C++逐渐应用于嵌入式系统中了,C++语言在编译器开优化的情况下,代码效率已经接近C语言了,并且提供了更高级的语言特性。(C语言也可以实现C++的特性LINUX内核就是使用了很多面向对象的...原创 2019-02-18 14:33:15 · 3251 阅读 · 0 评论 -
C语言-----如何面向对象编程
C语言多态原创 2017-07-28 09:27:34 · 810 阅读 · 0 评论 -
设计模式--观察者
观察者模式又称为发布定阅模式原创 2017-08-11 13:52:40 · 285 阅读 · 0 评论 -
正则表达式示例
正则表达式示例原创 2017-06-22 17:07:43 · 1986 阅读 · 0 评论 -
C++ 命名空间
命名空间原创 2017-07-10 20:18:25 · 478 阅读 · 0 评论