
编程
dayou1024
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
KCV值 - 3DES加密
KCV值 - 3DES加密3-DES加密环境中的KCV(密钥检查值)是什么?关于什么是KCV以及它如何在3-DES加密中使用,是否有很好的文档?“6.15钥匙检查值目的:该数据用于证明卡/处理器可以访问特定的DES密钥值 格式:二进制,3个字节内容:DES密钥加密八个字节的零结果的最左边三个字节“(source)__“任何DES密钥的密钥检查值将通过使用ECB 3DES加密8字节'00'来计算,并使用相关密钥”(source)__“DES / 3DES密钥的密钥检查值(缩写为KCV或C.转载 2021-01-20 22:58:12 · 8024 阅读 · 0 评论 -
#ifdef __cplusplus extern “C”的作用详解
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写...转载 2020-06-29 11:50:10 · 15259 阅读 · 6 评论 -
C语言函数中的3个点 ...有什么作用
转载于网友的一片文章,写的很好! 标准库提供的一些参数的数目可以有变化的函数。例如我们很熟悉的printf,它需要有一个格式串,还应根据需要为它提供任意多个“其他参数”。这种函数被称作“具有变长度参数表的函数”,或简称为“变参数函数”。我们写程序中有时也可能需要定义这种函数。要定义这类函数,就必须使用标准头文件<stdarg.h>,使用该文件提供的一套机制,并需要按照规定的定义方式工作。本节介绍这个头文件提供的有关功能,它们的意义和使用,并用例子说明这类函数的定义方法。 ...转载 2020-06-28 20:44:31 · 4351 阅读 · 0 评论 -
C语言中定义变量“#X”,”X##”, “##X” 和“##X##”解析
关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:1. #使用#define WARN_IF(EXP) /do{ if (EXP) /fprintf(stderr, "Warning: " #EXP "/n"); } /while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF (divider );其中div...转载 2020-06-26 20:14:06 · 4334 阅读 · 0 评论 -
C语言中的内联函数inline
本文链接:https://blog.youkuaiyun.com/lufeiop02/article/details/6526499在c中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足所造成的程式出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。下面我们来看一个例子#include <stdio.h转载 2020-06-26 19:51:17 · 337 阅读 · 0 评论 -
C语言中申请变量顺序不同而导致占用内存大小不同的问题
C语言中申请变量时顺序不同,会导致占用的内存不能,特别是在使用结构体时,结构体内的变量是连续存放的,使用不当,将会浪费大量内存空间,下面以代码说说明1、#include <stdio.h>#include <string.h>#define u8 unsigned char#define u16 unsigned short int#define u32 unsigned inttypedef struct{ u16 a; u8 b; u16 c; u原创 2020-06-16 20:27:11 · 755 阅读 · 0 评论 -
c语言中__align()关键字的作用与内存对齐的原理
32位cpu为例,cpu在访问内存的时候是以一个字进行传输的(计算机中,一个机器字长就是cpu位数,32位cpu,四个字节为一个字),那么也就是说cpu读取数据每次都是四个字节四个字节的读取,计算机最初是从地址0开始寻址,那么寻址也就是4个字节4个字节的地址依次往后找。如果我们只需要读取一个字节的char型变量,那么计算机也是读取它所在的4个字节出来,然后提取出那个目标字节就行了,因为32位计算机...转载 2020-04-09 11:53:47 · 1467 阅读 · 0 评论 -
#define assert_param(expr) ((void)0) 这是个宏定义,但是我真是不知道(void)0能执行什么操作
问题:#define assert_param(expr) ((void)0) 这是个宏定义,但是我真是不知道(void)0能执行什么操作具体的定义和用法在下面void MY_NVIC_SetVectorTable(u32 NVIC_VectTab,u32 Offset){ assert_param(IS_NVIC_VECTTAB(NVIC_VectTab)); assert_pa...转载 2020-01-06 20:06:34 · 906 阅读 · 0 评论 -
RFID,RC522教程
B站视频教程(教程一般):https://www.bilibili.com/video/av73409046?p=14相关文档资料(含代码):https://pan.baidu.com/s/1xEKybpw5C62c6P5rzpAJ-Q主要看红框的文件代码mfrc522.h#ifndef __MRRC522_H__#define __MRRC522_H_...原创 2019-12-25 19:36:16 · 6455 阅读 · 1 评论 -
C语言中bdata的用法
unsigned char bdata sta;sbit RX_DR =sta^6;sbit TX_DS =sta^5;sbit MAX_RT =sta^4;如同89c51单片机中 sbit LED=P1^0; 一样,可以单独使用P1口的位0原创 2019-11-27 16:38:23 · 3213 阅读 · 2 评论 -
#pragma 的几种用法
转自:https://blog.youkuaiyun.com/houyichaochao/article/details/80555218预编译指令#pragma有很多种用法,我敢保证很多程序员即使是一辈子也不会碰到其中的有些用法,是的,他们的确很偏僻,我们也没有用他们的需求。所以,本文不会面面俱到,只是把几种常用的几种汇总了一下。1. #pragma once保证头文件只被include一...转载 2019-05-23 10:15:30 · 2697 阅读 · 0 评论