c
IT超人
软件开发,各种语言
展开
-
程序知识汇总
程序相关原创 2022-06-21 22:28:39 · 169 阅读 · 0 评论 -
c语言宏嵌套和展开规则
基本原则:在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。#是在定义两边加上双引号#define _TOSTR(s) #sprintf(_TOSTR(test ABC))printf(_TOSTR("test ABC"));printf(_TOSTR(_TOSTR(test ABC)));==================预编译结果:printf("test ABC")printf("\"test ABC\"");printf(转载 2020-09-09 13:57:00 · 1682 阅读 · 2 评论 -
google的gn构建系统
什么是GN?GN是一个生成Ninja构建文件的元构建系统,以便你可以用Ninja构建Chromium。你为什么从GYP切换?我们相信GN文件比GYP文件更具可读性和可维护性。 GN很快:GN比GYP快20倍。 GN支持作为构建的一部分,根据Ninja的需要自动重新运行。这消除了在更改构建文件时需要记住重新运行GN的必要性。GN为我们提供了更好的工具来执行依赖(见gn check...转载 2019-07-16 14:09:47 · 1584 阅读 · 0 评论 -
ASan(Linux),gcc4.8以上版本自带的内存检查工具
转自:http://shafeng.github.io/2017/05/10/asan/最近线上的程序总是莫名其妙崩溃,因为我们的项目使用了分布负载的机制,对于玩家的影响其实很小,但是我肯定是忍不了的…程序崩溃的core文件里面完全找不到问题所在,初步分析应该是野指针导致,仔细分析程序之后并没有发现内存释放后没有置null的情况,很可能是多线程导致的,然而代码量太大,大海捞针实在是无法找...转载 2019-06-03 15:43:09 · 4586 阅读 · 0 评论 -
根据pc寄存器的值定位出错代码行
[17184178.672000] Bad mode in data abort handler detected[17184178.672000] Internal error: Oops - bad mode: 0 [#1] PREEMPT[17184178.672000] CPU: 0 Not tainted (2.6.26.5 #1255)[17184178.67200...转载 2019-05-10 14:53:57 · 3675 阅读 · 0 评论 -
gdb相关(栈和寄存器)
GDB的常用调试命令大家可以查阅gdb手册就可以快速的上手了,在这儿就不给大家分享了,需要的可以到GDB的官网去下载手册。这里重点分享下GDB调试中的一些寄存器和栈的相关知识用于解决下列gdb调试时的问题:优化的代码在printf或其它glibc函数处core 没有检查返回值的函数调用异常导致的异常 优化的代码的计算异常的中间过程分析 栈溢出导致的core 局部变量越界导致栈异常的co...转载 2019-05-09 21:27:58 · 2049 阅读 · 0 评论 -
c 宏定义用法#define
转自:https://blog.csdn.net/boring_wednesday/article/details/78756696宏定义 语法 #define name Stuff#define PI 3.14//定义一个M,值为3.14#define DO_FOREVER for(;;)//定义一个死循环#define REG register//定义...转载 2019-05-14 14:18:29 · 463 阅读 · 0 评论 -
unity test相关
http://www.throwtheswitch.org/unity转载 2019-05-08 14:49:10 · 192 阅读 · 0 评论 -
c语言头文件中定义inline static相关函数的优劣
头文件中常见static inline函数,于是思考有可能遇到的问题,如头文件经常会被包含会不会产生很多副本?网上说法不一。于是自己验证。经过arm-none-eabi-gcc下测试后得出结论。 inline 关键字实际上仅是建议内联并不强制内联,gcc中O0优化时是不内联的,即使是O2以上,如果该函数被作为函数指针赋值,那么他也不会内联,也必须产生函数实体,以获得该函数地址。经测试c...转载 2019-03-12 15:30:27 · 682 阅读 · 0 评论 -
c语言inline详解
本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从 inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码文...转载 2019-03-14 15:05:00 · 529 阅读 · 0 评论 -
gpio pin和pad的区别
PIN指芯片封装好后的管脚,即用户看到的管脚;PAD是硅片的管脚,是封装在芯片内部的,用户看不到。PAD到PIN之间还有一段导线连接的。转载 2019-03-05 17:52:17 · 8645 阅读 · 0 评论 -
SIMD向量化运算
随着机器学习等人工智能技术的飞速发展,矩阵乘法的应用越来越多,intel芯片先后提供了不同系列的向量指令,包括mmx、sse、avx等,支持simd操作。后来为了更好地支持矩阵乘法,又增加了fma(Fused Multiply-Add)指令。fma指令需要三个向量参数va,vb,vcva,vb,vc,其效果等价于表达式(va∗vb)+vc(va∗vb)+vc,其中的乘法和加法都是面向向量中的元素的...转载 2019-02-17 23:53:35 · 1846 阅读 · 0 评论 -
c如何正常中断一个运行的线程
最近开发一些东西,线程数非常之多,当用户输入Ctrl+C的情形下,默认的信号处理会把程序退出,这时有可能会有很多线程的资源没有得到很好的释放,造成了内存泄露等等诸如此类的问题,本文就是围绕着这么一个使用场景讨论如何正确的终止正在运行的子线程。其实本文更确切的说是解决如何从待终止线程外部安全的终止正在运行的线程首先我们来看一下,让当前正在运行的子线程停止的所有方法1.任何一个线程调用exi...转载 2019-01-30 14:25:51 · 1359 阅读 · 0 评论 -
c语言信号机制以及中断
用户态到内核态切换途径: 1:系统调用 2:中断 3:异常中断类型分为如下两大类:一、强迫性中断:正在运行的程序所不期望的,来自硬件故障或外部请求。1、I/O 中断:来自外部设备通道;2、程序性中断:运行程序本身的中断,如 溢出、缺页中断、缺段中断、地址越界。3、时钟中断4、控制台中断5、硬件故障 二、自愿性中断:用户在编程时...转载 2019-01-30 12:00:21 · 2862 阅读 · 0 评论 -
c++成员函数指针typedef
A tutorial on a useful yet poorly understood language feature,useful to cache the outcome of a decision or to enable a different sort ofpolymorphism. Mike CrawfordConsulting Software Engineermike@sog...转载 2018-06-05 11:43:30 · 2222 阅读 · 0 评论 -
nm的符号包含@或者@@含义
Next: Expressions, Previous: PHDRS, Up: Scripts [Contents][Index]3.9 VERSION CommandThe linker supports symbol versions when using ELF. Symbol versions areonly useful when using shared libraries. ...转载 2018-04-04 16:32:16 · 1350 阅读 · 0 评论