C/C++
文章平均质量分 73
duanchuadnong
这个作者很懒,什么都没留下…
展开
-
LLVM编译clang-tidy
编译脚本原创 2022-12-02 11:10:40 · 353 阅读 · 0 评论 -
lua脚本
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档lua前言一、下载lua二、编译测试代码测试脚本总结前言提示:以下是本篇文章正文内容,下面案例可供参考一、下载lualua下载:试验中下载的是5.2.3,使用其他版本链接时可能会报错找不到符号二、编译该工程文件内容较少,使用的是makefile,若想编译成vs需要查看对应的库文件依赖。本次编译顺带生成动态库,修改src/makefile文件如下LUA_SO=liblua.soLUAC_T= luacLUAC_O= .原创 2022-03-21 18:08:14 · 1919 阅读 · 0 评论 -
ffmpeg移植到树莓派
ffmpeg移植前言一、准备材料二、编译步骤总结前言提示:这里可以添加本文要记录的大概内容:几年前买了一块树莓派3B+板子,躺在废料堆中好几年,最近在学习ffmpeg相关内容,打算用树莓派实现一个NVR的功能。一、准备材料1.ffmpeg源码:ffmpeg-4.32.x264源码:x264-master3.x265源码:x265-2.74.fdk-aac源码:fdk-aac2.0.1二、编译步骤环境:Ubuntu 16.04编译工具:arm-linux-gnueabihf-1.配原创 2022-03-18 14:47:28 · 931 阅读 · 0 评论 -
GCC升版本或降版本方法
项目场景:提供其他部门SDK组件,编译crypto库始终编译不过,出现大量未定义的引用。对方机器是arm的服务器,由于是第三方库且在不同机器上出现的问题,暂未投入精力定位,最快的方式就是使用和自己编译环境一致的工具去重新编译。问题描述:使用GCC4.8.5编译crypto库没有问题,使用GCC7.3.0编译出现大量未定义符号,编译服务器为arm架构设备。下载4.8.5GCC版本,使用高版本GCC7.3.0编译4.8.5版本时出现如下问题, 解决方案:解决办法,修改要编译的GCC代码,参考链原创 2022-02-16 16:26:10 · 2642 阅读 · 0 评论 -
C++ 11 的std::atomic操作
C++11系列工作中遇到的特性文章目录前言一、什么是原子操作?1.1 原子操作std::atomic与互斥量的区别1.2为何需要原子操作std::atomic前言C++ 11 的std::atomic操作。提示:以下是本篇文章正文内容,下面案例可供参考一、什么是原子操作?所谓的原子操作,取的就是“原子是最小的、不可分割的最小个体”的意义,它表示在多个线程访问同一个全局资源的时候,能够确保所有其他的线程都不在同一时间内访问相同的资源。也就是他确保了在同一时刻只有唯一的线程对这个资源进行访问。原创 2021-09-23 11:16:12 · 479 阅读 · 0 评论 -
C++11的锁问题
使用C++提供的锁,可以摆脱跨平台时带来的问题,以前只开发linux程序,使用linux的锁编程完后,移植到windows平台需要魔改代码。文章目录前言一、Mutex是什么?std::mutex 介绍std::recursive_mutex 介绍std::time_mutex 介绍lock_guard和unique_lock总结前言C++11版本引入了许多锁的内容,开贴记录,以便后面的学习,内容也都是网上摘抄的片段。如有错误的地方再修改。一、Mutex是什么?Mutex 又称互斥量,C++原创 2021-09-23 11:05:25 · 1158 阅读 · 0 评论 -
pure virtual method called错误定位
项目场景:代码集成三方库后,在程序即将退出时,报错崩溃,程序没有正常退出。提示如下错误:pure virtual method calledterminate called without an active exception使用gdb调试,查看程序堆栈问题描述:问题并不是必现,大多数情况下都能正常执行完,且异常基本都出现在程序即将退出时。崩溃时打印pure virtual method called字面翻译是:纯虚函数被调用。原因分析:奔溃时的打印信息是定位问题的入口。原创 2021-09-15 08:53:00 · 3016 阅读 · 0 评论 -
编译llvm+clang,使用libclang分析C++代码
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、准备工作二、编译llvm+clang三、使用libclang分析c++代码总结前言使用libclang分析C++代码,得到AST,根据节点遍历,获取所需的特定结构体内容。一、准备工作libclang是在clang编译后的附带产物。clang后续版本中使用了c++11等新的特性。所以要求gcc版本至大于4.8,为了不改变机器环境,编译选择安装到当前路径下。1.升级gcc版本至稳定的7.5,通过源码安装的方式,步骤原创 2021-05-27 11:29:22 · 2196 阅读 · 0 评论 -
安卓下使用valgrind工具定位问题
文章目录前言一、材料二、使用步骤1.阅读README.android2.编写测试代码3.导入设备总结前言valgrind是linux下非常强大的工具,通过 NDK编译,让其在安卓环境下定位C/C++的问题。一、材料wget http://valgrind.org/downloads/valgrind-3.12.0.tar.bz2ndk-r14b二、使用步骤1.阅读README.android#!/bin/shexport NDKROOT=/home/xxxx/android-ndk原创 2021-04-07 21:00:40 · 1214 阅读 · 0 评论 -
C++基础学习六
C++基础学习六多态基本概念多态原理一、pandas是什么?二、使用步骤1.引入库2.读入数据总结多态基本概念父类的引用或者指针指向子类的对象c++支持编译时静态多态和运行时动态多态,运算符重载和函数重载就是编译时多态,而派生类和虚函数实现运行时多态。多态原理提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy .原创 2020-09-17 19:48:07 · 73 阅读 · 0 评论 -
C++基础学习五
C++基础学习五智能指针继承方式继承中的对象模型继承中的构造和析构继承中的同名成员处理继承中的静态成员处理多继承问题菱形继承智能指针class Person{public: Person(int age) { this->m_Age = age; } void showAge() { cout << "年龄为:" << this->m_Age << endl; } ~Person() { cout << "P原创 2020-09-16 16:28:09 · 96 阅读 · 0 评论 -
C++基础学习四
C++基础学习四静态成员变量静态成员函数单例模式案例对象模型初探2.读入数据总结在一个类中,若将一个成员变量声明为static,这种成员称为静态成员变量,与一般的数据成员不同,无论建立了多少个对象,都只有一个静态数据的拷贝 ,静态成员变量,属于某个类,所有对象共享 。静态变量,在编译阶段就分配空间,对象还没有创建时,就已经分配空间 。- 静态成员变量必须在类中声明,在类外定义- 静态数据成员不属于某个对象,在为对象分配空间中不包括静态成员所占空间。- 静态数据成员可以通过类名或者对象名来引用.原创 2020-09-14 15:03:08 · 86 阅读 · 0 评论 -
C++基础学习三
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档C++基础学习三一,构造1构造函数的分类(构造和析构必须在public下才可以调用)2拷贝构造函数调用时机一、pandas是什么?二、使用步骤1.引入库2.读入数据总结一,构造构造函数和析构函数这两个函数是被编译器自动调用的。无论你是否喜欢,对象的初始化和清理工作都是编译器强制我们要做的事情,即使你不提供初始化操作和清理操作,编译器也会给你增加默认的操作,只是这个默认初始化操作不会做任何事情,class Person{publ原创 2020-09-08 21:30:31 · 330 阅读 · 0 评论 -
C++基础学习二
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档内联函数前言一、C++中宏处理问题?二、内联函数1.内联函数基本概念2.内联函数和编译器总结前言C中经常把短且经常执行的代码段写成宏,而不是写成函数,避免函数调用,在预编译时替换宏,来提升效率提示:以下是本篇文章正文内容,下面案例可供参考一、C++中宏处理问题?1.在C中也会出现,宏看起来像个函数调用,但是会有隐藏一些难以发现的错误。宏函数也没有作用域。#define ADD(x, y) x+y //如果不加括号,有些地原创 2020-09-03 20:08:43 · 120 阅读 · 0 评论 -
C++基础学习一
C++基础学习双冒号作用域运算符命名空间c++对c语言的增强引用双冒号作用域运算符1.编译器有就近原则,默认选择局部变量#include <iostream>using namespace std;int a = 200;int test(){ int a = 100; cout << "a = " << a << endl;//编译器有就近原则,默认选择局部变量 cout << "a = " << ::a &l原创 2020-09-03 16:28:17 · 83 阅读 · 0 评论