C语言
文章平均质量分 59
Hugo0Chen
这个作者很懒,什么都没留下…
展开
-
编程范式01
一名软件工程师的4个境界:学会--->会学--->会用---->被用知识之上是思想,思想之上是精神得行而忘意,无异舍本逐末;得意而忘性,方能游刃有余。编程范式:是编程的基本风格和编程思想的体现。有哪些编程范式呢:第一种、命令式,由若干行动指令组成的有序列表,并且用变量存储数据,用语句执行命令; 第二种、结构化,主要思想是宏观上提倡‘自顶向下’的设计,外观上采用顺序、选择以及循环的逻辑结构,摈弃或限制goto语句,保证程序的结构清晰、易于调试和维护。...原创 2021-07-07 18:16:21 · 177 阅读 · 0 评论 -
常用的字符串处理函数
经常使用的是1、memset(....),例如将字符串设定为某些内容时,例如char buf[12],memset(buf, 12, sizeof(buf)); 将buf的内容全部设定为12;2、strstr(..) ,在一个字符串中找到子串,如果存在,则返回改子串在被查找中的第一个字符位置,如果不存在,则返回NULL; char sourceB原创 2017-04-10 08:33:09 · 431 阅读 · 0 评论 -
读华为C语言编程规范(函数、头文件)
文档从头文件、函数、标识符、变量、宏、程序效率、注释、排版、表达式、代码编辑编译、可测性、安全性、字符串操作安全、整数安全、格式化输出安全、文件IO安全、单元测试、可移植性、编程规范等方面讲述了C编程时的注意事项;本记录将摘抄一部分内容学习。代码总体规则:1、清晰;2、简洁;3、风格统一;头文件:原则:1、适合放置接口的声明,不适合放置实现;2、文件职责单一;3、应向稳定方原创 2017-04-11 13:59:42 · 2183 阅读 · 0 评论 -
读华为C语言编程规范(标识符、变量)
标识符:命名规则:unix like风格,单词小写,用‘_’分割,text_mutex;windows风格,大小写混用,单词连一起,每个单词首字母大写。原则:1、命名清晰、明了、使用完整单词或大家基本理解的缩写,避免产生误解;2、除常见通用缩写外,不使用单词缩写,不使用汉语拼音;规则:1、产品/项目内应保持统一的命名风格;2、用正确的反义词组命名具有互斥意义的变量或原创 2017-04-11 14:57:13 · 3801 阅读 · 0 评论 -
linux上C语言实现udp
目的:C语言实现udp_client 和udp_server功能,实现简单的数据收发功能;参考出处:1、https://www.cnblogs.com/yuqiao/p/5786427.html //socket接口详解2、https://blog.csdn.net/zgrjkflmkyc/article/details/8605333文件需要包含<fcntl.h>以及<unis...原创 2018-04-24 20:43:32 · 4604 阅读 · 1 评论 -
linux上C语言TCP通信
使用c语言实现TCP client和server的简单通信功能出处:https://blog.csdn.net/lovekun1989/article/details/41042273 TCP client 测试:TCP server测试:/*-----------------------socket tcp server -----------*/#include <sys/stat.h&...转载 2018-04-25 13:45:16 · 4186 阅读 · 0 评论 -
GCC 使用
参考出处:http://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html四步曲:1、预处理(Preprocessing)2、编译(Complilation)3、汇编(Assembly)4、连接(Linking)一步到位的编译指令;例如有个test.c文件, gcc test.c -o test,这个过程实际上是上面4部曲分阶段执行。...转载 2018-04-25 16:25:41 · 291 阅读 · 0 评论 -
Cmake 的使用
参考出处:IBM的developerWorks: https://www.ibm.com/developerworks/cn/linux/l-cn-cmake/目录:1、CMake 简介2、多源文件目录处理3、工程中查找并使用其它库4、使用cmake 生成Debug和Release 版本5、附一个Cmakelist.txtlinux 安装cmake, sudo apt-get install c...转载 2018-04-25 16:47:21 · 307 阅读 · 0 评论 -
GDB使用
参考出处:https://www.ibm.com/developerworks/cn/linux/sdk/gdb/index.html摘要gdb 目标文件 runlist/list 函数名print 变量break line号 设置断点continueinfo locals 显示全部局部变量值next 单步执行 (跳过函数)step进入函数单步执行quit 退出GDBbreak 行号 if ...转载 2018-04-25 20:18:17 · 933 阅读 · 0 评论 -
GDB使用 2
参考出处:https://blog.csdn.net/huqinwei987/article/details/23548239gdb eg 和 gdb eg -q的区别, -q 不打印版本信息验证一些关于堆栈的问题,但是没什么好方法,printf实在局限,流于表面,只间表象(值、范围、规律)不见真身(地址、寄存器、过程),所以想到了gdb——一个强大的调试工具,还能看汇编代码,现在先把这两天学的常...转载 2018-04-26 18:38:12 · 250 阅读 · 0 评论 -
cmake 2
出处:http://www.hahack.com/codes/cmake/什么是 CMakeAll problems in computer science can be solved by another level of indirection.David Wheeler你或许听过好几种 Make 工具,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Mak...转载 2018-04-26 18:40:27 · 198 阅读 · 0 评论 -
cjson使用笔记(转)
转载来源:http://www.cnblogs.com/chineseboy/p/3959852.html 缘 起 ...转载 2018-07-12 16:29:49 · 4365 阅读 · 0 评论 -
无锁队列 lock free queue
来源:linux中的kfifo的解释http://blog.csdn.net/linyt/article/details/5764312无锁队列的实现-陈皓 http://coolshell.cn/articles/8239.html无锁队列的概念:http://blog.csdn.net/xy010902100449/article/details/47045599转载 2017-02-10 15:55:24 · 2529 阅读 · 0 评论 -
各种数据结构实现范例
http://home.gna.org/gdsl/1.8/html/examples_2main_queue_8c-example.html转载 2017-01-18 00:07:03 · 826 阅读 · 0 评论 -
C语言的特性
通过如下的一些例子,感知C语言的特性。1、swtich通常格式为:switch(表达式){case 常量1:零或多条语句;break;case 常量2:零或多条语句;break;default常量3:零或多条语句;break;}注意break的使用,跳出的范围是哪一个。如果没有break,就变成了fall through,这种情况出现不足3%。偶尔出现两条或是多原创 2016-12-21 23:17:59 · 1295 阅读 · 0 评论 -
C声明的优先级规则
C声明的优先级规则:A 声明从它的名字开始读取,然后按照优先级顺序依次读取;B 优先级从高到低依次是:B.1 声明中被括号括起来的那部分B.2 后缀操作符:括号()表示这是一个函数,而方括号[ ]表示这是一个数组;B.3 前缀操作符:星号*表示“指向···的指针”C 如果const和(或)volatile关键字的后面紧跟类型说明符(如int,long)那么它作用于类型说原创 2016-12-22 10:03:38 · 281 阅读 · 0 评论 -
说说typedef
typdedef 为一种类型引入新的名字,而不是为变量分配空间,某些方面类似于宏文本替换,但它并没有引入新类型,而是为现有类型取个新名字,这是他们之间存在一个关键性的区别。typedef是为数据类型创建别名,而不是创建新的数据类型。#define peach intunsigned peach i;// 以上使用是正确的。typedef int bananaunsigned b原创 2016-12-22 14:58:13 · 555 阅读 · 0 评论 -
使用define宏定义的小技巧
对于strcmp()函数,用于比较两个字符串,当两个字符串相等时,返回的值是0.例如代码if( !strcmp(s,"volatile") )return QULIFIER;这里有个较好的方法#define STRCMP( a, R, b) (strcmp(a, b) R 0)现在可以这么写了,if( STRCMP(s,==, “volatile”) )扩展开原创 2016-12-22 15:10:05 · 924 阅读 · 0 评论 -
读书--冒号课堂-0
一名软件工程师的4个境界:学会--->会学--->会用---->被用知识之上是思想,思想之上是精神得行而忘意,无异舍本逐末;得意而忘性,方能游刃有余。 编程范式:是编程的基本风格和编程思想的体现。有哪些编程范式呢: 第一种、命令式,由若干行动指令组成的有序列表,并且用变量存储数据,用语句执行命令; 第二种、结构化,主要思想是宏观上提倡‘自顶...原创 2017-01-02 21:22:33 · 458 阅读 · 0 评论 -
C语言实现有限状态机FSM
FSM(finite state machine),它是一种协议,是一个数学概念,用于有限数量的子程序(状态)的变化,每个子程序进行一些处理并选择下一种状态(通常取决于下一段输入);它可以用作程序的控制,对于那些基于输入的在几个不同的可选动作中进行循环的程序尤为合适。C语言中的状态机表达式通常使用函数指针数组的方式。void (*state[MAX_STATES] ) ( );ex原创 2016-12-22 15:27:21 · 3699 阅读 · 0 评论 -
C语言面向对象编程——读书《C嵌入式设计模式》
面向对象设计讲究分开和有区别,函数和过程是程序的基本单元,数据结构是结构化编程的重要概念。面向对象编程时结构化和函数的正交过程,类将数据和数据上的执行过程组合在一起。类的两个特性:数据(属性)和行为(操作)。最简单的实现类的方法是使用文件作为封装边界;公共变量和方法在头文件中可见,而在实现文件中包含方法体、私有变量和方法。多态允许相同函数在一种上下文中实现一种功能,而在另一种上下文中完成另翻译 2017-01-03 12:38:14 · 5787 阅读 · 0 评论 -
认识a.out
经常看到a.out的出现,这个a.out到底是什么呢?“assembler output”(汇编程序输出),但是现在程序编程中出现它并不是汇编输出,而是汇编和连接器输出。早先在PDP-7中并没有连接器,程序是把所有的源文件连接在一起,然后进行汇编,产生a.out。回来加入link连接器后,依然沿用了a.out的命名,曾被解释为“新程序准备就绪,打算执行”。另外a.out文件还被标识为一原创 2017-01-06 10:54:10 · 1374 阅读 · 0 评论 -
C语言的进一步发展
C一开始的时候并没有标准I/O,而是由库函数提供,而且库函数通常都是显式调用,后来Mike Lesk开始尝试编写可移植的I/O,经过不断的优化和裁剪,后来成为标准I/O函数库。于此同时C预处理器加入这个行列中。C预处理器主要实现3个功能:1、字符串替换;#define 2、头文件包含;#include ;3、通用代码模板的扩张。比如#define a(y) a_expande原创 2016-12-20 23:25:51 · 352 阅读 · 0 评论 -
了解C语言
任何新的发现都是源于旧方法无法很好的解决当前问题,而后创新尝试中产生。C的产生是由于一个项目的失败,专家们转而寻找其它方式解决问题时应运而生。 贝尔实验室和麻生理工学院创建了一个项目-Multics工程,目的是创立一个操作系统。他们试图在一个小硬件上创立一个庞大的操作系统,但是最终交付的不是满意。为此他们中的一些专家尝试用了新的方式,最终产生了unix的C。语言 :原创 2016-12-20 07:21:40 · 339 阅读 · 0 评论 -
ANSI C
1、编译器的限制:函数的形参数量上限是31个;函数调用时实参数量上限31个;一条源代码行里至少可以有509个字符;表达式至少可以支持32层嵌套;long int最大值不得小于32位。2、ANSI的标准结构,包括介绍、环境、c 语言、C运行库。foo(const char **p){}main( int argc,char**argv){foo(argv);原创 2016-12-20 23:29:36 · 309 阅读 · 0 评论 -
C语言优化
程序进行优化,通常是指优化程序代码或程序执行速度。优化代码和优化速度实际上是一个予盾的统一,一般是优化了代码的尺寸,就会带来执行时间的增加,如果优化了程序的执行速度,通常会带来代码增加的副作用,很难鱼与熊掌兼得,只能在设计时掌握一个平衡点。代码量VS执行速度一、程序结构的优化1、程序的书写结构虽然书写格式并不会影响生成的代码质量,但是在实际编写程序时还是应该尊循一定的书写规则,一个转载 2017-01-17 12:50:49 · 1200 阅读 · 0 评论 -
语义检查lint程序
第一次听说lint是在开发STM32项目时,在keil编译器中PC lint作为插件安装的。编译器可以检查语法的问题,而lint可以检查语义的问题。在unix上的C语言中,语言设计者把编译器中所有的语义检查措施都分离出来,错误检查由一个程序单独完成,这个程序就是lint。例如char* fun(void){ char local_array[3];.....return原创 2016-12-21 23:05:03 · 1037 阅读 · 1 评论