![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C
文章平均质量分 74
专栏主要包含c语言方面的知识
技术探索者
这个作者很懒,什么都没留下…
展开
-
C语言:register类型变量
C语言:register类型变量原创 2024-02-01 13:55:20 · 695 阅读 · 0 评论 -
C:算术移位和逻辑移位傻傻分不清楚
C:算术移位和逻辑移位傻傻分不清楚原创 2023-12-07 16:25:13 · 478 阅读 · 1 评论 -
C\C++:原子计数操作 之__syn_fetch_and_add性能研究
C\C++:原子计数操作 之__syn_fetch_and_add性能研究原创 2023-11-29 15:34:45 · 987 阅读 · 0 评论 -
C语言:parameter和argument的区别
C语言:parameter和argument的区别原创 2023-11-24 17:49:45 · 344 阅读 · 0 评论 -
Linux:linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)
Linux:linux getopt_long()函数(命令行解析)(getopt、getopt_long_only)(短选项 -,长选项 --)(option结构体)原创 2023-11-08 16:27:24 · 644 阅读 · 0 评论 -
Linux:IP转INT详解
Linux:IP转INT详解原创 2023-09-12 15:19:53 · 896 阅读 · 0 评论 -
C语言:无符号整型
C语言:无符号整型原创 2022-11-21 20:05:57 · 2931 阅读 · 0 评论 -
Linux:无锁化编程 __sync_fetch_and_add原理及其实现分析
Linux:无锁化编程 __sync_fetch_and_add原理及其实现分析原创 2022-10-27 09:29:46 · 1590 阅读 · 0 评论 -
Linux: gdb调试coredump(使用篇)
什么是coredumpCoredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下,会把进程此刻内存、寄存器状态、运行堆栈等信息转储保存在一个文件里。 该文件也是二进制文件,可以使用gdb、elfdump、objdump或者windows下的windebug、solaris下的mdb进行打开分析里面的具体内容。 注:core是在半导体作为内存材料前的线圈,当时用线圈当做内存材料,线圈叫做core。用线圈做的内...转载 2021-11-13 10:46:27 · 1023 阅读 · 0 评论 -
C :执行shell命令
1.system函数 函数说明:system()会调用fork()产生子进程,由子进程来调用/bin/sh-cstring来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。 在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。 返回值:如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。 若参数s...原创 2021-11-06 10:23:39 · 2807 阅读 · 0 评论 -
Qt :(多种下载通道+所有版本)
Qt体积很大,有 1GB~3GB,官方下载通道非常慢,相信很多读者会崩溃,所以建议大家使用国内的镜像网站(较快),或者使用迅雷下载(很快)。作为 Qt 下载教程,本文会同时讲解以上三种下载方式。Qt 官方下载(非常慢)Qt 官网有一个专门的资源下载网站,所有的开发环境和相关工具都可以从这里下载,具体地址是:Index of /图1:Qt 官方下载网站截图对目录结构的说明 目录 说明 archive 各种 Qt 开发工具安装包,新旧都有(可以下载 Qt 开发..转载 2021-09-18 15:40:23 · 207 阅读 · 0 评论 -
C语言新标准C11
2011年12月8号,ISO 发布了新的 C 语言的新标准——C11,之前被称为C1X,官方名称 ISO/IEC 9899:2011。相比C99的变化1. 对齐处理操作符 alignof,函数 aligned_alloc(),以及 头文件 <stdalign.h>。见 7.15 节。2. _Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。例子:_Noreturn void thrd_exit(int res);3. _Gen转载 2021-08-06 10:26:31 · 1109 阅读 · 0 评论 -
数据结构 :二叉树的详解与实现
简介二叉树的相关概念,如,树高度,节点层数,节点度数,路径,叶节点,分支节点,根节点,父节点,左节点,右节点,兄弟节点,祖先节点,子孙节点,左子树,右子树等基本概念,不再赘述。二叉树分类1、完全二叉树若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。 一维数组可以作为完全二叉树的存储结构,堆排序使用的数据结构就是完全二叉树。2、满二叉树国际标准定...转载 2021-07-09 17:02:53 · 1008 阅读 · 0 评论 -
linux :shutdown() 与 close()函数详解
shutdown() 与 close()详解原创 2021-06-29 16:32:34 · 543 阅读 · 0 评论 -
Linux 下性能分析工具 之 Sprof
Sprof主要用于Gprof的补充,分析程序的共享库(需要-g编译)。1.export LD_PROFILE_OUTPUT=${PWD}2.export LD_PROFILE=abc.so3.export LD_LIBRARY_PATH=/usr/lib/4.执行使用该so的主程序5.执行sprof so文件名 so文件名.profile原创 2021-06-15 17:23:35 · 361 阅读 · 0 评论 -
Linux性能优化gprof使用
gprof用于分析函数调用耗时,可用之抓出最耗时的函数,以便优化程序。 gcc链接时也一定要加-pg参数,以使程序运行结束后生成gmon.out文件,供gprof分析。 gprof默认不支持多线程程序,默认不支持共享库程序。gcc -pg 编译程序 运行程序,程序退出时生成 gmon.out gprof ./prog gmon.out -b 查看输出...转载 2021-06-15 16:27:09 · 851 阅读 · 0 评论 -
Linux/Centos: 开源库uthash第六弹utringbuffer.h
文章目录一、简介 1.1 介绍 1.2 源码获取 二、使用方法 2.1 声明 2.2 new and free 2.3 使用 三、元素 3.1 整形 3.2 字符串 3.3 关于UT_icd 3.3.1 标准数据类型 3.3.2 自定义结构体 四、引用 五、注意一、简介1.1 介绍utringbuffer.h提供的宏函数是基于utarray.h来实现的。因此,在学习这篇文章之前,请先学习utarray.h。.转载 2021-01-26 16:26:50 · 625 阅读 · 0 评论 -
Linux/Centos: 开源库uthash第五弹utarray.h
文章目录一、简介 1.1 介绍 1.2 源码获取 二、使用方法 2.1 声明 2.2 new and free 2.3 push and pop 三、元素 3.1 整数 3.2 字符串 3.3 关于UT_icd 3.3.1 标准数据类型 3.3.2 自定义结构体 四、引用 五、注意一、简介1.1 介绍utarray.h中包含了一组用于C结构体的通用array宏。使用起来非常简单,只需要将utarray.h拷贝.转载 2021-01-26 16:18:28 · 362 阅读 · 0 评论 -
Linux/Centos: 开源库uthash第四弹utstring.h
文章目录一、简介 1.1 介绍 1.2 源码获取 二、使用方法 2.1 声明 2.2 new and free 2.3 使用 2.4 简单的实例 三、引用 四、注意 4.1 new/free与init/done 4.2 子字符串搜索 4.3 并行使用字符串搜索 一、简介1.1 介绍utstring.h中包含了一组动态string宏。使用起来非常简单,只需要将utstring.h拷贝到你的项目,并包含进你的源码即可:#incl.转载 2021-01-26 16:11:08 · 314 阅读 · 0 评论 -
Linux/Centos: 开源库uthash第三弹utstack.h
文章目录一、简介 1.1 介绍 1.2 源码获取 二、使用方法 2.1 栈头声明 2.2 栈操作 2.3 一个简单的实例 2.4 其他宏 一、简介1.1 介绍utstack.h中包含了一组动态stack宏。使用起来非常简单,只需要将utstack.h拷贝到你的项目,并包含进你的源码即可:#include "utstack.h"utstack.h宏支持栈的基本的操作:push、pop、count,以及获取顶部元素操作。其内部实现为连接的链表。.转载 2021-01-26 16:06:49 · 354 阅读 · 0 评论 -
Linux/Centos: 开源库uthash第二弹utlist.h
文章目录一、简介 1.1 介绍 1.2 源码获取 1.3 链表类型 1.4 使用效率 二、使用 2.1 定义结构体 2.2 定义链表头 2.3 常用操作 2.4 一个例程 2.5 其他操作 一、简介1.1 介绍utlist.h中包含了一组用于C结构体的通用链表宏。使用起来非常简单,只需要将utlist.h拷贝到你的项目,并包含进你的源码即可:#include "utlist.h"utlist.h宏提供了基本的链表操作:添加、删除.转载 2021-01-26 16:02:22 · 1192 阅读 · 0 评论 -
Linux/Centos: 开源库uthash第一弹uthash.h
文章目录一、简介 1.1 uthash介绍 1.2 uthash能做什么 1.3 uthash效率 1.4 源码获取 二、简单使用 2.1 定义hash数据结构 2.2 从hash表查找item 2.3 向hash表添加item 2.4 从hash删除item 三、详细介绍 3.1 常用操作 3.1.1 声明hash表 3.1.2 添加item 3.1.3 替换item 3.1.4 查找item 3.1.5 删除it转载 2021-01-26 15:12:24 · 1240 阅读 · 0 评论 -
深入理解SQLite3之sqlite3_exec及回调函数
sqlite3的C/C++接口API主要有3个重要函数,分别为1、sqlite3_open(const char* filename, sqlite3 **ppDb);2、int sqlite3_exec( sqlite3*, /* An open database */ const char *sql, /* SQL to be evaluated */转载 2021-01-25 14:22:21 · 1419 阅读 · 1 评论 -
Linux/Centos:编译那些事儿之 -L、-rpath和-rpath-link的区别
以下结论及分析仅针对动态库。结论:(1)-rpath和-rpath-link都可以在链接时指定库的路径;(2)运行可执行文件时,-rpath-link指定的路径不再有效(链接器没有将库的路径包含进可执行文件中), 而-rpath指定的路径还有效(因为链接器已经将库的路径包含在可执行文件中);(3)-L指定的是链接时的库路径,生成的可执行文件在运行时库的路径仍由LD_LIBRARY_PATH环境变量指定;(4)不管采用何种选项链接,当提示找不到动态库时均可通过设置.转载 2021-01-21 11:19:46 · 592 阅读 · 0 评论 -
Linux/Centos:static修饰全局变量、局部变量及函数 知多少
1.static修饰全局变量 在全局变量前加static,全局变量就被定义成为一个全局静态变量。特点如下: 1)存储区:静态存储区没变(静态存储区在整个程序运行期间都存在); 2)作用域:全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。非静态全局 变量的作用域是整个源程序(多个源文件可以共同使用); 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它。好处: 1)不会被...原创 2021-01-15 11:07:44 · 771 阅读 · 1 评论 -
Linux/Centos : gcc __attribute__关键字之visibility
visibility用于设置动态链接库中函数的可见性,将变量或函数设置为hidden,则该符号仅在本so中可见,在其他库中则不可见。 g++在编译时,可用参数-fvisibility指定所有符号的可见性(不加此参数时默认外部可见,参考man g++中-fvisibility部分);若需要对特定函数的可见性进行设置,需在代码中使用__attribute__设置visibility属性。 编写大型程序时,可用-fvisibility=hidden设置符号默认隐藏,针对特定变量和函数,在代码中...转载 2020-12-14 18:16:48 · 288 阅读 · 0 评论 -
Linux/Centos Makefile 使用总结
1. Makefile 简介Makefile 是和 make 命令一起配合使用的.很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂.Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力.本篇博客是基于{精华} 跟我一起写 Makefile而整理的, 有些删减, 追加了一些示例.非常感谢 gunguymadm...转载 2020-11-19 09:47:16 · 3919 阅读 · 1 评论 -
__attribute__((unused))的含义
在阅读内核代码时,注意到有些函数或变量前会添加__attribute__((unused))在gcc手册中找到了有关的解释:unused:This attribute, attached to a function, means that the function is meant to be possibly unused. GCC will not produce a warning for this function.=============================...原创 2021-02-20 09:43:41 · 2998 阅读 · 0 评论 -
c语言实现带LRU机制的哈希表
#include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define HASH_BUCKET_MAX (1024) #define HASH_BUCKET_CAPACITY_MAX (256) #define HASHTABLE_DEBUG #define TRUE 1 #define FALSE 0 #ifdef HA...转载 2020-11-24 16:14:44 · 294 阅读 · 0 评论 -
valgrind 简介
一 valgrind是什么?Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构转载 2016-06-30 23:38:16 · 343 阅读 · 0 评论 -
详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;转载 2016-06-30 22:46:17 · 178 阅读 · 0 评论