c/c++
文章平均质量分 68
hero_hilog
面向gayhub编程
展开
-
cmake创建库和使用库工程示例(多个cmakelists)
使用cmake构建一个工程,该工程创建了两个静态库,另外生成一个引用该两个静态库的可执行文件。1.构建工程该工程生成两个库liaadd.a和liabmul.a。一个工程管理的cmake,一个生成lib的cmake,一个生成可执行测试程序的cmake。文件:add.hint add(int a, int b);文件:add.c#include "add.h"int add(int a, int b){ return a + b;}文件:mul.hint mul(int a, i原创 2021-10-09 14:44:58 · 3961 阅读 · 2 评论 -
C语言实现linux系统获取高精度时间差(毫秒)
简介通过函数gettimeofday获取当前时间代码#include <stdio.h>#include <sys/time.h>#include <unistd.h>int main(){ double dbCostms; struct timeval tvStart, tvEnd; gettimeofday(&tvStart, NULL); usleep(30000); gettimeofday(&tvEnd, NULL)原创 2021-09-17 16:21:23 · 1265 阅读 · 0 评论 -
linux下c语言简单实现写日志函数(多线程安全)
调用时包含log.h文件后使用LOG函数进行写入日志操作// eg:LOG("[%s][%d] a:%d b:%s", __FILE__, __LINE, a, b);log.h// log.h: 标准系统包含文件的包含文件// 或项目特定的包含文件。#pragma once#include <stdio.h>#include <sys/types.h> #include <unistd.h> #include <stdlib.h>原创 2021-08-23 17:43:40 · 1200 阅读 · 0 评论 -
linux下c语言简单实现获取配置文件中的配置项
类比windows下GetPrivateProfileString、GetPrivateProfileInt获取配置的API使用vs2019创建linux空项目及测试的配置文件以及测试结果如下图ini.h#ifndef __INI_H__#define __INI_H__#include <stdio.h>#include <string.h>#include <stdlib.h>#include <errno.h>#define B原创 2021-08-23 17:34:26 · 549 阅读 · 0 评论 -
进程线程区别以及通信方式浅易分析
C代码 main.c文件#define GPX2CON *(volatile int *)0x11000c40 //led2#define GPX2DAT *(volatile int *)0x11000c44#define GPX1CON *(volatile int *)0x11000c20 //led3, k2#define GPX1DAT *(volatile int *)0x...原创 2018-09-18 10:21:41 · 238 阅读 · 0 评论 -
while(char a ++)
#include &lt;stdio.h&gt;int main(){ char a = 250; while(a++) { printf("my first blog\n"; }}char类型数据是一个字节 2^8 = 256; 当a++时,当加到256会自动回到0,所以上述代码的打印次数会是6次,然后跳出循环。...原创 2018-09-08 15:39:48 · 792 阅读 · 0 评论 -
C语言 结构体指针类型的全局变量使用
定义结构体文件1 <GlobalVar1.h>/******************************** file: GlobalVar1.h* author: hehl* time: 2019/11/5*******************************/#ifndef __GLOBALVAR1_H__#define __GLOBALVAR1_H__...原创 2019-11-05 11:13:14 · 7205 阅读 · 0 评论 -
在Linux环境下编写Java程序调用C函数实现流程
首先确保自己的Linux系统有没有对应的Java环境,如果没有要先在Linux上进行java的安装与配置1.下载JDK进入 Oracle官网 下载对应的JDK。这里以jdk-8u231-linux-i586.tar.gz为例2.创建java目录在/usr/目录下创建java目录 sudo mkdir /usr/java cd /usr/java把下载好的jdk-8u231-lin...原创 2019-12-19 19:02:36 · 237 阅读 · 0 评论 -
c语言实现五种数据交换
#include <stdio.h>#include <string.h>#include <limits.h> // 整型数的最大最小值定义在该文件下#include <float.h> // 浮点数数的最大最小值定义在该文件下/*数据类型*/typedef int data;const char* cDateType = "int";/*数据类型*/int swap1(data *m, data *n){ if(!m原创 2020-07-06 18:30:57 · 1367 阅读 · 0 评论 -
学习记录-c语言-大小写转换问题理解和记录
今天看了ffpaly源码,在源码中看到一段很有意思的函数(大写转换小写,小写转换大写)。觉得很有意思,故而写下对它的理解源码如下libavutil\avstring.h/** * Locale-independent conversion of ASCII characters to uppercase. */static inline av_const int av_toupper(int c){ if (c >= 'a' && c <= 'z')原创 2021-06-09 17:18:32 · 575 阅读 · 3 评论 -
c++删除一个tree
自己写的代码,过了很久自己忘了原有的逻辑了。 = =、while(!vec_delete_clumn.empty()) // 如果容器不为空{ iterTree = m_map_tree_info.find(vec_delete_clumn[0]); for(int32_t i = 0; i < iterTree->second->m_vec_child_id.size(...原创 2020-04-17 15:30:26 · 336 阅读 · 0 评论 -
com学习记录(一)——基本概念
参考:https://baike.baidu.com/item/com%E7%BC%96%E7%A8%8B/833430?fr=aladdin COM即组件对象模型(Component Object Model) COM是一种跨应用和语言共享二进制代码的方法 COM通过定义二进制标准解决了这些问题,即COM明确指出二进制模块(DLLs和EXEs)必须被编译成与指定的结构匹配。这个标准也确切规定了在内存中如何组织COM对象。COM定义的二进制标准还必须独立于任何编程语言(如C++中的命名修饰)。一旦原创 2020-08-12 10:52:35 · 1216 阅读 · 0 评论 -
com学习记录(二)——使用vs2019完成windows下的com组件编程
参考https://blog.csdn.net/rankun1/article/details/80987334https://blog.csdn.net/xuq09/article/details/89000679com组件c++代码编写服务端工程,是一个dll;客户端工程,是一个控制台工程服务端生成动态库 vs2019项目配置类型为动态库,编译代码后点击生成,生成解决方案。控制台出现输出成功1个,以及注册动态库 regsvr32 D:\code\vs2019\CompTest\Debu原创 2020-08-14 18:23:57 · 2096 阅读 · 2 评论 -
com学习记录(三)——在Linux环境下完成com组件编程
参考博客 Linux系统并没有对应的注册表和IUnknow接口,所以需要自己编写。类型定义 type.h/* $file: type.h $date: 2020年8月13日 $author: hehl $describe: 类型定义 $other:*/#ifndef __TYPE_H__#define __TYPE_H__typedef long HRESULT; // 32位机为四字节,64位机为八字节,和指针的类型长度一致typedef unsigned lon原创 2020-08-14 18:29:01 · 1218 阅读 · 0 评论 -
vs2019创建、编译、调试cmake Linux项目
初次尝试,按照别人的方法走了不少弯路,写下此文谨防自己或看到的人少走弯路。坚持记录,坚持学习~创建cmake工程设置远程连接Linux的ssh连接Linux系统通过ssh服务器开启ssh(安装ssh命令:sudo apt-get install openssh-server开启ssh:sudo service ssh start主机地址:使用 ip addr 或 ifconfig查看)远程Linux系统提前安装好如下软件(很重要!这里很容易踩坑)gccgdbrsync原创 2020-08-18 19:57:53 · 7711 阅读 · 0 评论 -
com学习记录(四)——在Linux环境下完成com组件编程分离服务端(动态库)客户端(可执行程序)
Linux下没有unknwn.h系统头文件,所以在Linux环境编写com组件时应该自己定义这个类和接口此项目分为两个文件夹,分别是服务端(生成动态库)和客户端(可执行文件)文件结构同级目录下两个文件夹,一个lib文件夹用于服务端动态库生成,一个client文件夹用于客户端测试编写程序**/com************/lib************************************base.h************************************IUnk原创 2020-08-19 20:36:26 · 1110 阅读 · 1 评论 -
windows程序异常产生dump文件(两种注册表和写代码三种方式实现)
注册表(方式1)添加注册表程序崩溃时自动生成dumpAuto:1开始 0停止Debugger:"D:\Windows Kits\10\Debuggers\x64\windbg.exe"是调用产生dump的程序可以用windbg 也可以用vs自带的调试工具C:\Windows\System32\vsjitdebugger.exe ".dump -ma D:\dumpWindbg\CrashDump.dmp"这句是使用windbg产生dmp的命令图中数据("D:\Windows Kit原创 2020-09-10 15:08:18 · 4993 阅读 · 2 评论 -
三种最大公约数算法耗时比较(vs2008使用MFC程序测试)
关键代码void CMFCTESTDlg::OnBnClickedButton1(){ UpdateData(); // 刷新数据 DWORD dw1 = GetTickCount(); DWORD nGCD1 = GetGCD1(m_num1, m_num2); DWORD dw2 = GetTickCount(); DWORD nGCD2 = GetGCD2(m_num1, m_num2); DWORD dw3 = GetTickCount(); DWORD nGCD3 = GetG原创 2021-01-15 19:01:12 · 287 阅读 · 0 评论 -
WindowsAPI MFC C++各种时间类型转换
时间类型及其意义FILETIME:结构持有的64位无符号的文件的日期和时间值。此值表示自UTC(Coordinated Universal Time)时间1601年1月1日开始的100纳秒为单位的时间。SYSTEMTIME:这个和tm有点类似,代表系统时间。其中,SYSTEMTIME.year的值为多少就表示公元哪一年。tm:Systemtime-1900得到tm.year,其他的还有些差别 tm.year的值加上1900才表示公元哪一年。time_t:是日历时间;其值表示从UTC(Coordina原创 2021-03-01 19:11:43 · 636 阅读 · 0 评论 -
Linux动态库静态库生成与使用
静态库先基于.cpp或者.c文件生成对应的.o文件,将几个.o文件 使用ar -cr命令 生成libname.a文件libname.a 为静态库, name 为静态库的名字1.静态库的两个函数对应四个文件,一个函数对应一个.h声明文件和.cpp实现文件函数1:fun1源文件fun1.h#include <iostream>using namespace std;void fun1();源文件fun1.cpp#include "fun1.h"void fun1(){原创 2021-05-10 14:59:15 · 348 阅读 · 0 评论 -
c++实现矩阵运算的加减法乘法以及测试用例
最新在看图像AI相关的知识,在此记录一个自己思考的代码用例。关于矩阵的应用在AI中应用还是很广泛,尤其是深度学习及其特征值提取中。这里先简单记录上自己简单的基础矩阵算法的类,后续学习中会不断丰富这个类。参考opencv3.4.0源码中libjasper模块中的jas_seq.c(本例中增加了加减乘运算,缩减和扩充了一些自己的理解)测试程序结果:对于矩阵的赋值都采用了调用类创建矩阵时赋值或不赋值(默认参数)处理,具体见代码。matrix.h 矩阵类的定义/*******************原创 2021-07-09 16:38:24 · 4087 阅读 · 0 评论