![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C与C++
文章平均质量分 84
主要介绍C与C++的相关内容
亭墨
一名喜欢轮滑,古风,正在学吹笛子,未来想做嵌入式驱动的电子科大生医工在读硕士
展开
-
嵌入式驱动学习第三周——container_of()宏
在代码管理多个数据结构时,几乎总是需要将一个结构嵌入到另一个结构中,并随时检索它们,而不关心内存偏移或边界的问题。是一个宏函数,可以通过结构体成员的地址找到结构体的地址。ptr——结构体成员地址type——结构体类型member——结构体成员在结构体里的名字// 一个员工类int age;// 年龄char* name;// 姓名}Engineer;// 一个公司类// c艹工程师// java工程师// 员工人数} company;原创 2024-03-11 23:45:15 · 955 阅读 · 0 评论 -
嵌入式驱动学习第二周——断言机制
断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真。可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言,而在部署时禁用断言。最终用户在遇到问题时可以重新起用断言。它可以快速发现并定位软件问题,同时对系统错误进行自动报警。断言可以对在系统中隐藏很深,用其它手段极难发现的问题可以用断言来进行定位,从而缩短软件问题定位时间,提高系统的可测性。原创 2024-03-04 22:23:28 · 1251 阅读 · 1 评论 -
嵌入式驱动学习第一周——内核的中断机制
当你在刷手机的时候,此时突然npy打电话来了,于是你退出刷手机状态,接听npy电话,此过程即为中断。简单来说,中断会让CPU停止正在执行的程序,转而让CPU执行中断处理函数,执行完再返回原程序。另外,整个操作系统就是一个中断驱动的死循环,即裸机开发中常写的。其他所有的事情都是由操作系统提前注册的中断机制和其对应的中断处理函数完成。原创 2024-03-01 23:06:30 · 1000 阅读 · 0 评论 -
嵌入式驱动学习第一周——定时器与延时函数
这篇博客一起学习定时器,定时器是最常用到的功能之一,其最大的作用之一就是提供了延时函数。原创 2024-02-29 12:15:41 · 1215 阅读 · 0 评论 -
嵌入式驱动学习第一周——内核的锁机制
本文主要介绍了linux内核的锁机制,主要是互斥锁和自旋锁。原创 2024-02-29 04:12:29 · 1235 阅读 · 0 评论 -
稚晖君项目复刻:L-ink门禁卡(1)——环境搭建与第一个项目创建
本系列打算复刻稚晖君的L-ink项目,这是第一篇,介绍了环境搭建,包括STM32CubeMX,Clion,openOCD,mingw,arm-none-eabi-gcc,环境配置,最后创建一个STM32的项目作为测试原创 2023-10-14 18:52:12 · 611 阅读 · 0 评论 -
成都精灵云复试完结篇
最近参加了成都精灵云的笔试与面试,岗位是c++工程师。后面自己复盘了过程,复试部分总结如下,希望能对各位想进该公司以及面试C++工程师的同学提供一些参考。后续也会陆续分享各公司的面试和笔试经验在该专栏,想看的可以关注一下博主!原创 2023-09-14 13:20:39 · 522 阅读 · 1 评论 -
LeetCode刷题日记003——无重复最长子串
Leetcode第三题,无重复最长子串c++解法,内有自己的想法和题解原创 2023-09-10 16:39:12 · 154 阅读 · 0 评论 -
成都精灵云初试
本文是精灵云的初试部分,主要的问题集中在c++基础原创 2023-09-09 22:17:12 · 582 阅读 · 5 评论 -
成都精灵云笔试部分
成都精灵云笔试复盘原创 2023-09-09 22:01:49 · 618 阅读 · 0 评论 -
手把手教你games101环境搭建(图文并茂)——Visual Studio安装,Eigen库,Opencv配置
使用图文的方式手把手教读者配置VS,Eigen和opencv,主要服务于games101本机环境的搭建原创 2022-11-16 16:37:52 · 11166 阅读 · 18 评论 -
OpenGL学习之各种流程及函数详解——基于LearnOpenGL(持续更新)
这篇博客主要是记录在学习LearnOpenGL过程中遇到的函数,以及流程问题,越学到后面越感觉混乱,因此做个记录。由于本博客的特殊性,不会有详细说明,如果想了解更多可以阅读或者在博客下方评论,也可以私信博主。此外为了督促,博主决定,一周至少更新一小章,如果本文有幸被各位看到,欢迎各位催更!原创 2023-03-22 00:28:26 · 786 阅读 · 4 评论 -
C++守则——尽量以const、enum、inline代替#define
我在整里C语言预处理指令的时候曾具体说明了#define的用法:浅谈C语言预处理指令而今天我们来看看为什么又最好不要用#define。我们写这样一行代码:#define NUM 1.653NUM可能不会被编译器看见;也许再变一起开始处理源码之前它就被预处理器移走了。于是记号名NUM可能未进入记号表内。于是当你运用此常量但获得一个错误信息时,就会不知所措,因为这个错误信息也许会提到100而不...原创 2019-08-29 16:54:16 · 277 阅读 · 0 评论 -
C++守则——尽可能使用const
const不管放在哪都是 表示此值不可被修改,此外还需要区别的就是const是修饰指针还是修饰数值:在*号前是指针所指的数值不可被修改,称为底层const,*号后面表示是指针不可被修改,称为顶层const。我们看的是const是在*的左边还是右边,与其在变量类型的那边并没有多大的关系,完全看个人习惯例如:const int *p;int const *p;const 最具威力的用法是面对函...原创 2019-08-31 00:22:14 · 152 阅读 · 0 评论 -
C++守则——确定对象被使用前已经被初始化
C++对于初始化这件事是喜怒无常的,比方这行代码:int x;又时候C++编译器会将它初始化为0,但有时候却又不一定。如果编译器真的读取到一个为初始化的值时就会导致各种不明确也的伪白兔,情节较轻的话就会终止程序,情节较重的话,就会读取一些伴随及的值,污染了正在进行读取动作的那个对象,最终导致不可测知的程序行为。事实上关于对象的初始化动作合是一定发生,何时不一定发生是由一些规则的,但是这些规...原创 2019-08-31 15:47:53 · 872 阅读 · 0 评论 -
C++守则——了解C++默默编写并调用那些函数
我们都知道,在类中若未声明构造函数和析构函数,那么我们的C++编译器会自动为该类声明一个默认构造函数,一个拷贝构造函数,一个copy assignment操作符和一个析构函数。例如,如果你写一个类:class Empty { }; /*以上代码等效于以下代码*/class Empty{public: Empty() { ... } //默认构造函数 Empty(const ...原创 2019-09-05 23:55:32 · 132 阅读 · 0 评论 -
C++守则——应当明确拒绝不想使用编译器自动生成的函数
我们有时候需要明确拒绝拷贝动作,比方说学生类,每个对象都是独一无二的,性别,名字,成绩,再不济,学号肯定是不一样的。但如果因为我们不需要就不去声明拷贝构造函数和赋值运算符,那也是不行的,因为编译器会自动为类声明一个拷贝构造函数和赋值运算符(详见:C++守则——了解C++默默编写并调用那些函数),万一我们的程序员再日后完善学生信息,优化程序的时候不小心产生了拷贝的动作,那样不会报错,但那样会由问题,...原创 2019-09-07 12:00:24 · 177 阅读 · 0 评论 -
C++守则——为多态基类声明virtual函数
我们都知道实现多态的一个方法就是使用虚函数。比方说我们用不同的方法记录时间:class TimerKeeper{public: TimeKeeper(); ~TimeKeeper(); ...};class AtomicClock: public TimerKeeper {...}; //原子钟class WaterClock: public TimerKeeper {...原创 2019-09-13 15:51:12 · 207 阅读 · 0 评论 -
浅谈C语言预处理指令
**浅谈C语言预处理指令**第一次写这种博客的文章,结合《C primer Plus》以及自己的一些理解编写,如有写的不对的地方还望指出。在C语言中,预处理指令大致包含#include、#define、#if、#ifdef、#ifndef、#else、#elif、#endif、#undef、#error、#pragma等,下面就来细细 地了解一下各自的用法和语法明细。 1. #defi...原创 2019-08-14 11:08:09 · 920 阅读 · 0 评论