![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
a1314521531
这个作者很懒,什么都没留下…
展开
-
Linux下XPath对xml解析
#ifndef CONF_XML_H#define CONF_XML_H// xml文件在上一篇博客的注释部分有#include #include #include #include #include #include #include #include #define ROOT "root" //根节点#define SON_1 "can0" //儿子节点1#def原创 2016-09-01 09:19:55 · 2124 阅读 · 0 评论 -
内核链表list.h文件剖析
内核链表list.h文件剖析一、内核链表的结构【双向循环链表】 内核链表的好主要体现为两点,1是可扩展性,2是封装。可以将内核链表复用到用户态编程中,以后在用户态下编程就不需要写一些关于链表的代码了,直接将内核中list.h中的代码拷贝过来用。struct list_head{ struct list_head *next, *prev;}; // 包含了两个指向list原创 2016-09-01 11:16:01 · 1371 阅读 · 0 评论 -
内核链表使用举例
内核链表使用举例#ifndef _EVENT_LIST_H_#define _EVENT_LIST_H_#include "list.h" // 内核链表头文件typedef int (*event_cb)(void *data);typedef struct{ void *params; event_cb handle; struct list_head list原创 2016-09-01 14:56:07 · 715 阅读 · 0 评论 -
C语言——位操作
C语言——位操作宗旨:技术的学习是有限的,分享的精神是无限的。一、基本位操作|或&与~取反^异或左移>> 右移 二、位操作的常见用法1.获取某位的值#def原创 2016-03-01 15:14:46 · 2256 阅读 · 0 评论 -
获取指定地址的值
C语言 —— 获取指定地址的值int b = *((volatile unsigned int *)0x0028FF1C);// 0x0028FF1C就是内存中的地址,根据自己需要指定#include #include int main(){ int b = *((volatile unsigned int *)0x0028FF1C); prin原创 2016-09-14 17:15:43 · 4941 阅读 · 0 评论 -
C语言实现x的n次方
C语言实现x的n次方 #include // codeblock编辑和编译的#define uint8_t unsigned char#define uint32_t unsigned int#define POWER 16// 求x的n次方,返回x的n次方的值uint32_t Power(uint8_t x, uint8_t n){ uint8_t原创 2016-09-03 13:43:47 · 19112 阅读 · 0 评论 -
7E加码解码
//===========================================================================// 加密单个字符uint8_t*hdlc_encode_buf(uint8_t *buf, uint8_t c){ switch (c) { case 0x7E: *buf++ = 0x7D; *buf++原创 2016-09-04 09:27:14 · 1505 阅读 · 1 评论 -
C语言九阳神功
C语言笔记(九阳神功)宗旨:技术的学习是有限的,分享的精神的无限的。1.static的作用:(1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)。--static局部变量只初始化一次,下一次依据上一次的结果值(2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函原创 2016-03-08 08:50:58 · 2253 阅读 · 0 评论 -
异或求校验和
uint8_t chk_xrl(const void *data, uint16_t length){ const uint8_t *buf = data; uint8_t retval = 0; while(length) { retval ^= *buf++; --length; } return retval;}原创 2016-08-25 16:43:51 · 8071 阅读 · 1 评论 -
网络大小端转换函数
网络大小端转换函数//*****************************************************************************//// htonl/ntohl - big endian/little endian byte swapping macros for// 32-bit (long) values////******原创 2016-08-26 15:35:58 · 969 阅读 · 0 评论 -
STM32 LED灯的另一种写法
STM32 LED灯的另一种写法#ifndef __BSP_LED_#define __BSP_LED_#include // 这个换成STM32的库文件就行#include "type.h"//==================================================================================#define LE原创 2016-08-26 15:37:42 · 4515 阅读 · 2 评论 -
C语言总结
C语言高级部分 一、内存大话题{ 1.0、内存就是程序的立足之地,体现内存重要性。 1.1、内存理解:内存物理看是有很多个Bank(就是行列阵式的存储芯片),每一个Bank的列就是位宽 ,每一行就是Words,则存储单元数量=行数(words)×列数(位宽)×Bank的数量;通常也用M×W的方式来表示芯片的容量(或者说是芯片的规格/组织结构)。原创 2016-09-03 11:35:54 · 2351 阅读 · 0 评论 -
单片机中通用的类型别名
单片机中通用的类型别名#ifndef _TYPE_H_#define _TYPE_H_#ifdef __GNUC__#define __packed __attribute__((aligned(1)))#endif/* exact-width signed integer types */typedef signed char int8_t;type原创 2016-08-26 09:28:45 · 1175 阅读 · 0 评论 -
C小项目——电子词典
C语言项目——查字典宗旨:技术的学习是有限的,分享的精神的无限的。【项目需求描述】一、单词查询给定文本文件“dict.txt”,该文件用于存储词库。词库为“英-汉”,“汉-英”双语词典,每个单词和其解释的格式固定,如下所示:#单词Trans:解释1@解释2@…解释n每个新单词由“#”开头,解释之间使用“@”隔开。一个词可能有多个解释,解释均存储在一行原创 2016-03-13 12:24:10 · 7203 阅读 · 0 评论 -
Linux下打印调试管理
#ifndef _DEBUG_MANAGE_H_#define _DEBUG_MANAGE_H_/* 信息的调试级别,数值起小级别越高 */#define APP_EMERG "" /* system is unusable */#define APP_ALERT "" /* action must be taken immediately */#define APP_原创 2016-08-31 09:45:05 · 719 阅读 · 0 评论 -
Linux下libxml2编程基础
libxml2编程基础一、libxml2的简介 xml是一个实现读、创建、以及操作xml数据功能的C语言库。并且支持XPATH查询,以及部分的支持XSLT转换等的功能。 libxml2的下载地址为ftp://xmlsoft.org/libxml2/,完全版的库是开源的,并且带有例子的程序和说明文档。有rpm包格式,也有tar包的形式,可以下载下来自己编译安装。原创 2016-08-29 09:08:45 · 978 阅读 · 0 评论 -
C语言框架
C语言的基础知识在这张图上可以尽显,只是展示了一些C语言的基础知识。原创 2014-07-17 19:49:44 · 2332 阅读 · 0 评论 -
状态机——protothreads
状态机——Protothreads一、prothreads的优缺点优点: 1. 以纯C语言实现,无硬件依靠性;因此不存在移植的困难。 2. 极少的资源需求,每个Protothread仅需要2个额外的字节;3. 支持阻塞操纵且没有栈的切换。缺点: 1. 函数中不具备可重入型,不能使用局部变量; 2. 按顺序判断各任务条件是否满足,因此无优先级抢原创 2016-03-27 13:14:04 · 5181 阅读 · 0 评论 -
C语言——可变参数
C语言——可变参数宗旨:技术的学习是有限的,分享的精神的无限的。1、目前为止,见过比较熟悉的可变参数的函数就是printf()函数int printf(const char *format, …); 2、可变参数宏void va_start(va_list arg_ptr, prev_param);type va_arg(va_list arg_ptr原创 2016-03-26 12:39:40 · 1324 阅读 · 0 评论 -
C语言——回调函数
C语言——回调函数 如果参数是一个函数指针,调用者可以传递一个函数的地址给实现者,让实现者去调用它,这就是回调函数。void func(void (*f)(void*), void *p)提供一个回调函数,再提供一个准备传给回调函数的参数;把回调函数传给参数f,把准备传给回调函数的参数按void *类型传给参数p。在适当的时候根据调用者传来的函数指针f调用回调函数,即调原创 2016-03-26 12:38:27 · 1760 阅读 · 0 评论 -
C语言——关键字
C语言——关键字宗旨:技术的学习是有限的,分享的精神的无限的。【谨记:尽量不要用printf函数,要去看变量的值,内存的值。】 auto,int,double,long,char,float,short,signed,unsigned,struct,union,enum,static,switch,case,default,break,register,const,volatile原创 2016-02-29 15:45:49 · 3760 阅读 · 2 评论 -
C语言书籍推荐
学好C语言靠的是坚持,推荐的这些书籍仅供参考,希望有用。原创 2016-02-27 10:21:34 · 5342 阅读 · 1 评论 -
C语言——内存管理
C语言——内存管理宗旨:技术的学习是有限的,分享的精神是无限的。//变量的存储布局(伴随初级程序员和高级工程师一生的)静态区:全局变量和static变量,初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和和未初始化的静态变量在相邻的的另一块区域。生命周期为整个程序,由编译器编译的时候分配;栈:局部变量,函数参数;栈上的内容只在函数的范围内存在,当函原创 2016-03-09 08:37:45 · 735 阅读 · 0 评论 -
C语言——项目规范
C语言大型项目的基本规范。原创 2016-03-07 08:41:15 · 1212 阅读 · 0 评论 -
C语言——字符串函数
C语言——字符串函数宗旨:技术的学习是有限的,分享的精神是无限的。常用字符串操作函数的实现:注释部分你们注意一下,我没加/,加了/就看不到注释了。**************************************************功能:实现字符串的拷贝*参数: dest:把src拷贝到dest src:被拷原创 2016-03-06 15:43:58 · 1113 阅读 · 3 评论 -
C语言——宏定义
C语言——宏定义宗旨:技术的学习是有限的,分享的精神的无限的。注意:宏定义不是函数!!一般用来简化操作的,但又能避免函数调用那样需要进行切换环境,花费时间。例如:#define max (a,b) (a>b?a:b)#define MALLOC(n, type) ((type *) malloc( (n) * sizeof(type) ))使用时,原创 2016-03-05 08:45:11 · 1264 阅读 · 2 评论 -
C语言——预编译
C语言——预编译宗旨:技术的学习是有限的,分享的精神的无限的。 在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源原创 2016-03-04 09:47:12 · 1528 阅读 · 0 评论 -
C语言——数组、函数、指针
C语言——数组、函数、指针宗旨:技术的学习是有限的,分享的精神的无限的。1、有什么作用?为什么要使用它们?(1)数组:提供一段连续的存储空间,存数据和字符串很方便;(2)函数:模块化程序的设计(返回值和参数);(3)指针:使用灵活; 2、数组的内存布局【数组和链表区别:数组顺序存储,大小固定;链表随机存储,大小不定。】int a[5]; --- a作为右值时原创 2016-03-02 09:03:19 · 2129 阅读 · 0 评论 -
C语言——结构体
C语言——结构体宗旨:技术的学习是有限的,分享的精神的无限的。1、结构体的作用:个人理解,结构体就是把一堆相关的数据打包成一个结构,使其放在一块内存区域。——项目之中尽量使用结构体,而不要单独使用数组。 2、结构体的声明与定义规范:(1)如果此结构体在多个文件中使用就放在头文件中(.h文件中);如果此结构体只在本文件中使用,则放在源文件中(.c文件中),原创 2016-03-03 08:52:12 · 1669 阅读 · 0 评论 -
Linux下获取xml调试信息等级
获取XML调试信息等级#ifndef _LOG_H_#define _LOG_H_#include #include #include #include #include #include #include #include #define CONF_FILE_NAME "/opt/can_book.xml"#define DEBUG_SON "de原创 2016-08-30 10:41:21 · 794 阅读 · 0 评论 -
C小项目 —— 学生选课系统
C小项目 —— 学生选课系统#include#include#include#includetypedef unsigned char uint8_t;typedef unsigned short uint16_t;typedef unsigned int uint32_t;#define CLASS_CLS system("cls")#defi原创 2017-03-01 09:18:09 · 3005 阅读 · 17 评论