杂项

杂项驱动开发 - linux分层思想:主要是想告诉大家,linux下的所有的函数接口是通用的,隔离硬件的,软硬件分离,你写的代码原则适用于任何的平台-- 实际上在发展中:把驱动也做了分层,分为硬件层(硬件信息层)和软件层(软件代码层)而软件代码层就在所有的平台通用了,而硬件信息层就渐渐演变成了设备树,bsp厂商把驱动分为两层:硬件层,软件层-- 我们现在初学的linux下的驱动,暂时不考虑分层。 阅读详情

1  关于很少使用的goto

    goto语句不能跨越变量的定义语句向前跳转,但向后跳过已经执行的变量定义语句则是合法的。
    向前跳过未执行的变量定义语句,意味着变量可能在没有定义的情况下使用。
    向后跳回到一个变量定义之前,则会使系统撤销这个变量,然后再重新创建它。
   

    goto 确实不是太好的idea,能少用还是少用吧。

 

2  关于空字符 '\0'

    NUL解释说明ASII表中当前描述的字符是一个空字符,它不是一个真正的字符,只是一个human语言的空字符表达,所以我们代码中是不会出现NUL的使用,只会用0或'\0'。

     转义字符'\0' 就是表示空字符,即符'\0' 是空字符NUL含义的对应字符;但是与指针空置NULL不是一个东西,后者只用于指针。

     同时表示空字符含义的字符 在ASCII码表中对应的十进制的值为0,所以十进制0, 转义字符'\0'二者等价。

     即0和'\0'都是表示空字符的意思,0是十进制表示的空字符, '\0'是字符表示的空字符。

     所以初始化字符数组时可如下:

     char str[20] = {0};  


    空字符和空格是两个不同的东西,空字符'\0'的ASII码十六进制为0x00,空格' '的ASII码十六进制为0x20


C语言转义字符表  

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS)008
\f换页(FF)012
\n换行(LF)010
\r回车(CR)013
\t水平制表(HT)009
\v垂直制表(VT)011
\\反斜杠092
\?问号字符063
\'单引号字符039
\"双引号字符034
\0空字符000
\ddd任意字符三位八进制
\xhh任意字符二位十六进制

 

标准ASCII表  

Bin

Dec

Hex

缩写/字符

解释

00000000

0

00

NUL

空字符

00000001

1

01

SOH(start of headling)

标题开始

00000010

2

02

STX (start of text)

正文开始

00000011

3

03

ETX (end of text)

正文结束

00000100

4

04

EOT (end of transmission)

传输结束

00000101

5

05

ENQ (enquiry)

请求

0010 0000  32     20    (space)                                空格


3  linux中错误码errno

    错误码可以通过函数strerror转换为人可读的错误信息
    #include <errno.h>
    cout << strerror(errno) << endl;

4  用memset来赋值只包含基本数据类型的数据的strcut

       struct  A

{
 char cName[6];
 int i;
 float scale;
}test;

       memset(&test,0,sizeof(struct A));
       
      由于char和int是相互可以转换的,所以十进制0对于char类型就是空字符NULL,

      对于int类型就直接为0,对于folat类型就是0.0了。

      Tips:

      对于结构体中如果有类,并且类中含有虚函数或是深拷贝,或是结构体中有string等c++类型之类的就不能用memset来赋值struct。因为struct实例test在定义时,可能会生成了虚函数表的指针或是new出来了内存并赋值给成员指针。这时用memset赋值,就可能冲掉实例test中虚函数指针或是内存指针。


 

5 string的c_str()方法,一般如果最好是将c_str()和strcpy ()一起使用,即用后者将c_str()的c字符串拷贝到定长的char数组中,然后再对这个定长数组进行操作。

   为什么要这么做呢?因为c_str()得到的c串的指针是只读的,是不能做写的操作(如果写的话,会得到不是你期待的结果,stl里面做了手脚吧),而且对str进行添加或是删除元素时都会改变string对象的内存结构,这样先前c_str()得到的临时指针也就无效了。

 

6  static member variable usage 

class MyPlugin

{

public:

    static MyPlugin& GetInstance()

    {

        static MyPlugin plugin; -----这是函数中的一个静态局部变量,局部静态变量只是在第一次执行时初始化,以后再次执行到此函数时,不再执行初始化。而且是存放在全局数据区,值一直保存着。

        return plugin;

    };

    ……

}

7 NULL 定义

/usr/include/linux下的stddef.h文件中的NULL定义:
#undef NULL
#if defined(__cplusplus)
#define NULL 0              ----c++中,为0
#else
#define NULL ((void *)0)  ---c中,为void*类型指针

NULL不是被定义为0,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。

8 c语言中变量的定义位置

  在标准的c89中规定变量定义必须放在所有的执行语句之前,否则c编译器编译会报错。

  不过在c99和c++中则没有这个问题,变量可以在程序任意位置定义。

  gcc有很多扩展功能,可以完美支持c99标准。所以对于支持c99标准的c编译器就不会有此限制了。

 9 bool和BOOL区别

typedef int                 BOOL;

#ifndef FALSE
#define FALSE               0
#endif

#ifndef TRUE
#define TRUE                1
#endif

1、类型不同

BOOL为int型

bool为布尔型

2、长度不同

bool只有一个字节

BOOL长度视实际环境来定,一般可认为是4个字节

3、取值不同

bool取值false和true,是0和1的区别

BOOL取值FALSE、TRUE或其他任意int类型值。

二:

bool是标准C++数据类型,可取值true和false。单独占一个字节,

如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。

BOOL是微软定义的typedef int BOOL。与bool不同,它是一个三值逻辑


BOOL a = 6;
       if (TRUE == a) //此条件是不成立的,6!=1
      {
          //条件成立
          int b = 0;
      }


10 为什么一般二进制数据操作的时候都是用char数组呢?

        个人觉得最主要的原因是因为解析一串二进制数据的时候,往往需要按字节或几个字节为单位来解析。这样如果是把二进制数据放在char数组中,可以根据char数组指针简单移位就可以解析以任意个字节为单元的数据了。方便!
       另外一个原因,char数组的最小单元就是一个byte,按物理内存中的实际顺序存放,不存在字节序的问题。但是,假如用int来表示二进制,跨平台的时候那么会带来字节序的问题。


11.  C++中有了malloc/free,为什么还需要new/delete?

C++中有了malloc/free,为什么还需要new/delete?

malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。

对于非内部数据类型的对象而言,光用malloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够构把造函数和析构函数的任务强加于malloc/free。

用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.


因此c++语言需要一个能完成内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。new/delete不是库函数,而是运算符。

本文摘自《程序员面试宝典》


12 查看Make详细帮助文档
sudo apt-get install make-doc  -----安装make文档
info make   ---查看make的文档

info是一个文档格式,也是阅读此格式的一个阅读器,info命令的用法:
http://www.examw.com/linux/all/146595/

13 string转化大小写(C++)
如何将一个字符串转换成大写或者小写?这是字符串匹配中经常需要做的事情,然而C++的Standard Library并没有提供将std::string转成大写和小写的功能,只提供了将char转成大写(toupper)和小写(tolower)的功能而已。但我们可以利用STL的transform配合toupper/tolower,完成std::string转换大(小)写的功能。
transform(s.begin(),s.end(),s.begin(),::toupper);
::toupper为c库里的全局作用域的c函数
什么是杂项维度? 杂项维度是对低粒度标志和指标的分组。 形象的解释就是将一些具有有限枚举值的字段值拼接在一起作为一行或者是多个字段的可能值不进行拼接而是作为多列组合,最后在杂项维度行中呈现。 事务型商业过程通常产生一系列混杂的、低基数的标志位或状态信息。与其为每个标志或属性定义不同的维度,不如建立单独的将不同维度合并到一起的杂项维度。这些维度,通常在一个模式中标记为事务型概要维度,一般不需要所有属性可能值得笛卡尔积,但应该至少包含实际发生在源数据中得组合值(不需要所有可能值的笛卡尔组合,至少要包括经常发生的几种状态的 阅读详情

相关推荐

ctf.show 萌xin区杂项

密码1 看到这段密文,第一反应就是十六进制 然后base64,跟之前写的一道很像 试了一下果然思路差不多,不过明显知道flag某些部分被打乱顺序了,题目给了个工具栏栅密码, 所以应该是栏栅解密一下,试试就试试 密码2 没有思绪,继续对着编码样式找了没什么特点,最后知道是看键盘(出题人这提示的真好) 看键盘rdcvbg 2qase3 6tghu7 分别圈住了 f w y ,KEY{fwy}成功提交 之前写misc时候,网上搜集信息经常能看到有这种看键盘的题...

qq_61768489的博客 2828

memset用法

memset的正规用法是只能用来初始化char类型的数组的,也就是说,它只接受0x00-0xFF的赋值然而,在大多数情况下,需要对一个double或int的数组赋一个相对很大或很小的初值 以下的赋值方式是不正确的: memset(arr,2147483647,sizeof(arr)); 但是可以用一些技巧,来得到一个差不多的最大值,比如像: memset(arr,0x7F,sizeof(arr)); 它将arr中的值全部赋为2139062143 这是用memset对int赋值所能达到的最大值 如下demo是

liguanxing的专栏 4496

C#:关于杂项文件

杂项文件 List item 需要使用 Visual Studio 编辑器独立于项目或解决方案来处理文件。 打开某个解决方案后,可以打开和修改文件,而不必将其添加到解决方案或项目中。 要独立处理的文件称为杂项文件。 杂项文件位于解决方案和项目的外部,不包括在生成中,而且无法包括在受源代码管理的解决方案中。 由于各种原因,独立于项目或解决方案来打开文件很有用。 你可能有一个需要在开发基于项目的解决方案时查看的文件,但它对于解决方案的开发并非必不可少。 常见示例包括开发备注或说明、数据库架构和代码剪辑。 此

weixin_50642897的博客 5340

memset用法详解

memset用法详解原型:extern void *memset(void *buffer, int c, int count);       用法:#include 功能:把buffer所指内存区域的前count个字节设置成字符c。说明:返回指向buffer的指针。举例:      // memset.c           #include       #include

zihong_chen的专栏 601

Linux——Linux驱动之杂项设备(基本概念、注册流程、杂项设备的驱动编写)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《嵌入式Linux开发实战》 长期持续带来更多案例与技术文章分享; 欢迎商业项目咨询,10年+软硬全栈内功,助力解决您的尊贵需求。 —————————————————————————————————— 目录 0 引言 1 什么是杂项设备? 2 杂项设备的描述 3 注册杂项设备的流程 4 编写杂项设备驱动实践 5 小结 0 引言 杂项设备是开...

数字世界 万物互联 1743

Linux驱动开发: 杂项字符设备

一、什么是杂项设备? 杂项设备(misc device)也是在嵌入式系统中用得比较多的一种设备驱动。 在Linux内核的include\linux目录下有Miscdevice.h文件,misc设备定义及其内核提供的相关函数在这里。 其实是因为这些字符设备不符合预先确定的字符设备范畴,所有这些设备采用主设备10,一起归于misc device,其实misc_register就是用主标号10调用register_chrdev()的。 ...

1394

从0开始学杂项 第一期:什么是杂项

主要讲了讲自己的一些心里话,用粗糙的语言勉强讲了讲什么是杂项和怎么学杂项比较合适(只是我觉得)

CHTXRT的博客 1499

关于爱思唯尔官方Latex模版参考文献不是按照引用顺序编号,乱序问题

接下来使用工具打开cas-model2-names.bst文件,全词匹配搜索。其他期刊的模版也是一样的操作,把规定序号的规则的。爱思唯尔给的Latex模版大概文件结构如此。发现是按照第一作者的姓氏的大写字母排序。命令行给注释掉,小写的sort可别注释。

weixin_42748439的博客 5108

ctf杂项入门,ctf比赛杂项题型解析

在CTF(Capture The Flag)竞赛中,杂项(Miscellaneous,简称 Misc)类题型通常是一组多样化的挑战,涵盖了不属于传统网络安全分类的各种问题。这些题目旨在测试参赛者的广泛技能和知识。

白帽子凯哥聊黑客 4276

用Python玩转ROS机械臂:YOLO目标检测+MoveIt!自动抓取仿真教程

本文详细介绍了如何利用Python集成YOLO目标检测与ROS的MoveIt!运动规划库,实现机械臂的智能抓取仿真。通过Gazebo仿真环境,从视觉感知、坐标转换到运动规划与执行,构建了一套完整的自动化抓取系统,为机器人视觉抓取应用提供了可复现的实践方案。

ppp33的博客 552

大模型训练中的AllReduce:从原理到实战,如何优化你的分布式训练效率

本文深入解析了大模型分布式训练的核心通信操作AllReduce,特别是高效的Ring All-Reduce算法原理。文章从实战角度出发,探讨了如何通过通信计算重叠、梯度累积策略、NCCL库调优以及混合并行通信优化等手段,有效降低通信开销,从而显著提升大模型训练效率。

julia4scientist的博客 524

Linux——驱动——杂项设备

misc的结构体。

m0_71703182的博客 1347

Python APP反爬实战:Frida+Charles抓包,破解签名校验

Charles抓包定位参数 → jadx-gui反编译找函数 → Frida Hook拿密钥/规则 → Python还原签名算法;Frida的核心价值:Hook住APP的加密函数,拿到“输入(密钥/参数)+输出(签名)”,无需懂复杂的逆向底层;严格对齐APP的参数排序、拼接规则、加密算法,差一点都会验证失败。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1535

【linux kernel】杂项(misc)设备驱动总结

文本总结misc杂项设备相关知识点

iriczhao的博客 2806

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4046

使用MATLAB和Simulink来设计并仿真一个智能家居多传感器数据融合系统

智能家居多传感器数据融合系统旨在通过集成来自多种不同类型的传感器的数据,以提供更精确和可靠的环境信息或用户状态监测。例如,将温度、湿度、光照强度、运动检测等多种传感器的数据结合起来,可以更好地了解家庭内部的状态,并做出相应的调整或响应。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个智能家居多传感器数据融合系统。

amy_mhd的博客 187

驱动-杂项设备

看杂项设备还是要和标准字符设备对比来看,主设备号固定为10,次设备号动态分配,简化了字符设备驱动的注册流程,适用于功能简单的设备杂项设备也有自己的结构体miscdevice 、file_operations ,却别与标准字符设备的 设备号结构体dev_t ,注册的字符设备结构体cdev ,文件操作集合结构体file_operations。

十年饮冰,难凉热血 816

微信文件自动归档!手把手教你用OpenClaw搭个自己的“数字员工”,告别重复劳动

很多人说“AI是未来”,但未来不是靠喊口号的。OpenClaw的真正价值,是让你把重复劳动交出去,把时间留给真正需要创造力的事。这事真能干,而且不难。下载OpenClaw(GitHub仓库按我写的步骤跑一遍遇到坑,评论区留言——我亲自帮你看作者后记:上周五,我让AI自动归档了文件后,终于在5点准时下班。回家路上,我给它发了条消息:“干得漂亮”。它没回,但我知道——它在默默等我的下一条指令。

2601_94871597的博客 411

PHP 杂项 函数

我们把不属于其他类别的函数归纳到杂项函数类别。

m0_72763148的博客 647

某东x-api-eid-token风控参数分析与破解

x-api-eid-token是京东的风控参数,在接口当中,如果没有该参数,有一定的概率能请求成功,但是在请求一段时间后,会报403权限失败的,该参数主要通过jsTk.do这个接口生成,并且会将其存储到cookie当中。

zhouzhou_98的博客 1547

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

linux下杂项驱动设备开发

linux下杂项驱动设备开发

qq_52360914的博客 1001

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【免费下载】 Altium Designer 自带元件库 - 杂项连接器与杂项设备

Altium Designer 自带元件库 - 杂项连接器与杂项设备 【下载地址】AltiumDesigner自带元件库-杂项连接器与杂项设备 本仓库提供了两个重要的Altium Designer元件库资源,分别为“Miscellaneous Connectors”和“Miscellaneous Devices”。这些库...

gitblog_09714的博客 6530

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【 Linux 杂项设备驱动】

本文介绍了Linux杂项设备驱动的开发技术,重点分析了其特点和开发流程。作为字符设备驱动的特殊形式,杂项设备驱动具有统一管理、自动分配主设备号和轻量级开发三大优势,特别适用于小型设备驱动开发。文章详细阐述了开发流程:包括引入头文件、定义设备结构体和文件操作函数、注册设备等关键步骤,并通过计数器设备实例进行说明。最后总结了杂项设备驱动的应用场景及开发注意事项,强调其在简化开发、提高效率方面的重要价值。这种驱动方式为快速实现小型设备功能提供了有效解决方案。

highersister的博客 962

Linux驱动开发笔记(四):设备驱动介绍、熟悉杂项设备驱动和ubuntu开发杂项设备Demo

驱动的开发需要先熟悉基本概念类型,本篇讲解linux杂项设备基础,还是基于虚拟机ubuntu去制作驱动,只需要虚拟机就可以尝试编写注册杂项设备的基本流程。

长沙红胖子 Qt・西安|省级科研团队从业背景,深耕双一流体系高精尖技术配套研发|剥离高精尖机理,沉淀高端特种行业领域 Qt 工程化落地经验|博文仅分享通用技术总结,输出公开普适工程思路。 1万+

linux 杂项设备,浅谈 MISC杂项设备

在虚拟机的 Ubuntu 系统上,如下图所示,使用命令“cat /proc/misc”,可以查看到 PC机 Ubuntu 系统的杂项设备。启动开发板,在超级终端中输入命令“cat /proc/misc”也可以查看对应的杂项设备。前面介绍过主设备号只有 256 个,设备又非常多,所以引入了子设备号。其中杂项设备的主设备号是 10,在任何 Linux 系统中它都是固定的。一般将 Linux 驱动分为字...

weixin_42517019的博客 538
上一篇: C++ 初始化列表
下一篇: C++ Singleton模式
nodeathphoenix
博客等级 码龄16年 97粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值