C/Cpp
River-D
知之者不如好之者,好之者不如乐之者。
展开
-
C++ 语法
C++中的结构体说明:在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C++中,考虑到C语言到C++语言过渡的连续性,对结构体进行了扩展,C++的结构体可以包含函数,这样,C++的结构体也具有类的功能,与class不同的是,结构体包含的函数默认为public,而不是private。C++关键字之friend原则上, 类的私有(private)和受保原创 2020-05-28 17:35:10 · 1471 阅读 · 0 评论 -
C语言常用字符串函数之 strtok 拆分字符串
strtok常用字符串分割方法实例汇总C语言 strtok 字符串分割原创 2022-03-29 12:00:17 · 619 阅读 · 0 评论 -
C/C++存储类别
存储类别程序的内存的使用可分为三类:1、静态变量使用:在编译时确定,只要程序还在运行就可以访问存储在该部分的数据。2、自动变量的使用:随着程序调用函数和函数结束,自动变量所用的内存数量也相应地增加和减少。这部分的内存通常作为栈来处理。3、动态分配的内存:在调用malloc()或相关函数时存在,在调用free()后释放。这部分由程序员管理,这部分内存用于动态分配会支离破碎。使用动态内存通常比使用栈内存慢。...原创 2022-03-10 14:40:31 · 802 阅读 · 0 评论 -
多级菜单库及菜单代码生成器
EmbeddedMenuLib: 嵌入式系统显示多级菜单库及菜单代码生成器原创 2022-01-21 16:03:38 · 523 阅读 · 0 评论 -
C语言的标准库
常见15个C语言的标准库原创 2022-01-19 14:55:24 · 644 阅读 · 0 评论 -
C语言技能树
https://bbs.csdn.net/skill/c添加链接描述原创 2022-01-10 17:50:50 · 6456 阅读 · 0 评论 -
C语言实现gbk/utf8/unicode编码转换
Unicode与UTF-8互转(C语言实现)不依赖任何系统API,用c语言实现gbk/utf8/unicode编码转换原创 2021-11-22 14:53:18 · 2884 阅读 · 0 评论 -
ARM系列编译工具链:__CC_ARM、__ICCARM__、__GNUC__、__TASKING__
__CC_ARM对应的平台是:ARM RealView:RealView,是一套包含编译、调试和模拟的开发工具,需结合开发环境如uvision、eclipse或者CodeWarrior,形成集成开发环境来使用。__ICCARM__对应的平台是:IAR EWARM:Embedded Workbench for ARM 是IARSystems 公司为ARM 微处理器开发的一个集成开发环境(下面简称IAR EWARM)。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点原创 2021-03-19 18:05:57 · 4638 阅读 · 0 评论 -
C语言字节对齐 #pragma pack() __attribute((aligned (n)))
C语言字节对齐对于标准数据类型,它的地址只要是它的长度的整数倍就行了,而非标准数据类型按下面的原则对齐:数组 :按照基本数据类型对齐,第一个对齐了后面的自然也就对齐了。联合 :按其包含的长度最大的数据类型对齐。结构体: 结构体中每个数据类型都要对齐。编译器是按照什么样的原则进行对齐的?先让我们看四个重要的基本概念:1.数据类型自身的对齐值:对于char型数据,其自身对齐值为1,对于short型为2,对于int,float,double类型,其自身对齐值为4,单位字节。2.结构体或者类的自身原创 2021-03-19 17:29:17 · 672 阅读 · 0 评论 -
Windows下VScode+CMake+MinGW64搭建C/C++编译环境
1、安装VS Code2、安装Mingw-w64到一个没有空格的路径,如C:\Mingw-w64。3、把Mingw-w64中的bin文件夹加入到Windows的PATH环境变量。Visual Studio Code (vscode) 配置 C / C++ 环境在VS Code中使用Mingw-w64原创 2021-02-22 11:50:50 · 369 阅读 · 1 评论 -
\r,\n与\r\n区别
'\r’是回车,前者使光标到行首,[Cartridge Return(CR)]'\n’是换行,后者使光标下移一格,[Line Feed(LF)]Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”,即“\r”。...原创 2021-01-18 11:53:07 · 1567 阅读 · 0 评论 -
三种CRC16 C语言算法
/** * @brief 按半字计算CRC,按半字计算运算量比按字节计算大约1倍,表占用空间只有1/16。 由于按字节计算需要存在256个16位数据,所以需要512个字节的空间,对于部分系统存在空间不足的情况, 因此出现了按半字节计算的方式,由于半字节只能表示0 - 15,所以只需16个16位的数据,32个字节空间 * @param data: 数组 * @param len: 数组长度 * @retval None. */const my_u16原创 2021-01-15 17:03:10 · 628 阅读 · 0 评论 -
Linux 内核宏 time_after解析
原码、补码、反码的关系Linux 内核宏 time_after解析time_after方法对jiffies回绕问题的解决原创 2021-01-14 17:38:17 · 393 阅读 · 0 评论 -
判断C++中一个变量存在的位置(.rodata段 .bss段 .data段还是栈中)
判断C++中一个变量存在的位置(.rodata段 .bss段 .data段还是栈中)注意:这个图是C++方式编译的C++11标准下的C++代码语言下生效。(因为以前有的C语言的标准是const变量不用初始化,然后放在.bss段或者.rodata段)。Llinux下可以用readelf命令查看编译的到的.o文件(可重定位对象文件)查看各段的大小来推测各个变量的存储位置。...转载 2021-01-08 11:07:19 · 529 阅读 · 0 评论 -
C之宏定义
系统宏定义__FILE__ __FUNCTION__ __LINE__ __DATE__ __TIME__求最大值和最小值#define MAX(x, y) (((x) < (y)) ? (y) : (x)) /*两数取最大数*/#define MIN(x, y) (((x) < (y)) ? (x) : (y)) /*两数取最小数*/求两个数差值的绝对值的宏#define TICKS_SUBTRACT_ABSOLUTE(cur, prev) (((cur) >=原创 2020-12-15 11:46:28 · 354 阅读 · 0 评论 -
C编程风格模板
my_app.c/** ****************************************************************************** * @file my_defines.h * @author river * @version V1.0 * @date 2020-12-12 * @brief This file contains all the functions prototypes. ***********原创 2020-12-11 17:49:43 · 115 阅读 · 0 评论 -
C++11特性
C++11特性:auto关键字C++11特性:decltype关键字C++11 并发编程基础(一):并发、并行与C++多线程原创 2020-10-09 16:25:13 · 75 阅读 · 0 评论 -
C 语法
C语言中volatile的用法及意义1、作用1)、volatile 影响编译器编译的结果,volatile指出 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错。2)、一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。2、下面是volatile变量的几个例子:并行设备的硬件寄存器(如:状态寄存器);原创 2020-09-22 22:34:22 · 132 阅读 · 0 评论 -
errno
errno记录最后的错误代码linux 下各errno的意义errno.00 is: Successerrno.01 is: Operation not permittederrno.02 is: No such file or directoryerrno.03 is: No such processerrno.04 is: Interrupted system callerrno.05 is: Input/output errorerrno.06 is: No such device o原创 2020-08-25 15:34:37 · 342 阅读 · 0 评论 -
使用NTP同步本地时间
简单的NTP客户端-C语言实现使用ntp协议同步本地时间(C语言)原创 2020-08-05 10:06:30 · 542 阅读 · 0 评论 -
常用C/C++库文件交叉编译步骤
## opensslsetarch i386 ./config no-asm shared no-async --prefix=$(pwd)/install --cross-compile-prefix=mipsel-openwrt-linux-uclibc-# 打开Makefile,删除里面所有的-m64和-m32编译选项。makemake install## zlibexport CC=mipsel-openwrt-linux-uclibc-gcc./configure --prefix原创 2020-07-31 18:49:31 · 1725 阅读 · 0 评论 -
printf函数封装
封装一#define my_debug_firmware printf#define my_app_debug(x,y...) my_debug_firmware("xlink app debug =>fun(%s)line:%d:->"x,__FUNCTION__,__LINE__,##y)#define my_net_debug(x,y...) my_debug_firmware("xlink net debug =>fun(%s)line:%d:->"x,__FUNCTI原创 2020-07-15 16:37:28 · 1000 阅读 · 0 评论 -
lex yacc flex bison
简介lex与yacc是两个在Unix下的分别作词法分析和语法分析的工具,Linux对应flex与bison。Yacc 与 Lex 快速入门flex 和bison的安装和使用Windows下安装lex(flex)与yacc(bison)原创 2020-07-01 11:59:23 · 214 阅读 · 0 评论 -
如何处理Linux动态库同名函数
记录一次采坑–如何处理Linux动态库同名函数?技巧:多共享动态库中同名对象重复析构问题的解决方法原创 2020-06-28 14:26:20 · 695 阅读 · 0 评论 -
SIGINT、SIGQUIT、 SIGTERM、SIGSTOP区别
2) SIGINT程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。3) SIGQUIT和SIGINT类似, 但由QUIT字符(通常是Ctrl-)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。15) SIGTERM程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终转载 2020-06-19 10:38:50 · 1207 阅读 · 0 评论 -
Apache APR可移植运行库
Apache APR可移植运行库简介(1)Apache APR可移植运行库简介(2)Apache源代码分析原创 2020-06-18 18:21:04 · 228 阅读 · 0 评论 -
ANSI 转义序列
ANSI 转义序列是一种用于控制终端输出的色彩、样式、光标位置以及控制终端行为的特殊字节. 它的使用方式就是通过 stdout 在字符串、字节中向外输出**Control当终端支持此转义序列的功能时, 就会呈现出相应的效果. 此功能常常用于终端的彩色输出、构建 Text User Interface 应用等. ANSI 转义序列在 Linux、 MacOS 的各终端下得到了广泛运用, 但是在 Windows 系统上支持不佳. 不过 Microsoft 新出的 microsoft/terminal .转载 2020-06-18 16:23:30 · 1657 阅读 · 0 评论 -
C/C++log日志库
C/C++log日志库比较超轻量级、高性能 C/C++ 日志库 EasyLoggerC语言日志库zlog总结原创 2020-06-18 10:36:29 · 1131 阅读 · 1 评论 -
log4c
log4c 使用手册(整合多个资料)log4c日志库的用法,再封装及其完整例子log4c 总结开源日志系统 log4c 使用心得+总结原创 2020-06-17 18:44:26 · 270 阅读 · 0 评论 -
GCC Link Question, can not be used when making a PIE object, recompile with -fPIC
Resolution If we use CMake tool to help compile, we can just add an "-no-pie" to linker flags:SET(CMAKE_EXE_LINKER_FLAGS " -no-pie")make链接问题原创 2020-06-15 14:47:55 · 678 阅读 · 0 评论 -
jsoncpp遍历json数据
#include <iostream>#include <string>#include "json.h"typedef Json::Writer JsonWriter;typedef Json::Reader JsonReader;typedef Json::Value JsonValue;using namespace std;void print_json(JsonValue data){ JsonValue::Members mem = data.g转载 2020-06-11 18:00:39 · 575 阅读 · 0 评论 -
sscanf
sscanf 详细说明原创 2020-06-10 09:59:47 · 321 阅读 · 0 评论 -
openssl的交叉编译
1、openssl源码包下载http://ftp.openssl.org/source/http://distfiles.macports.org/openssl/2、Ubuntu编译与安装openssl# openssl库默认安装路径为:/usr/local/ssl/libtar zxvf openssl-1.0.2q.tar.gzcd openssl-1.0.2q.tar.gz./config -sharedmakesudo make install3、交叉编译执行下面的命令配原创 2020-05-22 19:02:30 · 7912 阅读 · 1 评论 -
函数sigaction
函数sigaction、signal原创 2020-06-04 14:35:09 · 192 阅读 · 0 评论 -
JSON的构造和解析
C++通过jsoncpp类库读写JSON文件-json用法详解https://www.json.cn/原创 2020-05-19 16:10:32 · 253 阅读 · 0 评论 -
SQLite - C/C++
SQLite - C/C++原创 2020-06-04 14:24:02 · 123 阅读 · 0 评论 -
C++ string
详解C++ string字符串类C++ string常用截取字符串方法C字符串函数对应的C++ string操作详解代码分析c++中string类原创 2020-06-04 11:36:32 · 115 阅读 · 0 评论 -
c++中map的操作
c++中map的操作原创 2020-06-03 15:26:54 · 147 阅读 · 0 评论 -
C++ 继承关系
C++中的三种继承关系C++ 继承关系原创 2020-05-28 17:02:41 · 182 阅读 · 0 评论 -
curl 交叉编译
curl编译以及arm交叉编译1.安装交叉编译环境, 下载对应的交叉编译器压缩包2.解压后配置环境变量$ export PATH=/usr/local/gcc-linaro-linux-gnu/bin:$PATH3.下载 curlgit clone https://github.com/curl/curl# orwget https://curl.haxx.se/download/curl-7.60.0.tar.gz4.交叉编译 curl./configure --target原创 2020-05-22 22:23:57 · 2941 阅读 · 0 评论