C/C++语言
文章平均质量分 87
bailyzheng
这个作者很懒,什么都没留下…
展开
-
sizeof和strlen的比较
【C】sizeof与strlen的比较2011年11月30日晴枫发表评论阅读评论一、sizeofsizeof(…)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用转载 2012-04-25 14:33:56 · 613 阅读 · 0 评论 -
C语言运算符优先级
C语言运算符优先级顺口溜[转]醋坛酸味灌 味落跳福豆 共44个运算符 醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员 坛-单目,9个: ! ~ ++ -- -负号 (类型) *指针 &取地址 sizeof长度 (结合方向:自右向左)酸-算术,5个: * / % + -减 味-位移,2个: > 灌-关系,6个: >= == 等于转载 2012-10-07 21:58:10 · 1342 阅读 · 1 评论 -
text段、data段和bss段介绍
text段、data段和bss段介绍2009-08-31 13:21 1732人阅读 评论(3) 收藏 举报程序编译后生成的目标文件至少含有三个段,分别为:.text、.data和.bss。这三个段的大致结构图如下所示: 其中.text即为代码段,为只读。.bss段包含程序中未初始化的全局变量和static变量。data段包含三个部分:heap(堆)、st转载 2012-09-20 21:44:03 · 1489 阅读 · 0 评论 -
嵌入式C语言中的Doxygen注释模板
嵌入式C语言开发中通常使用Doxygen进行文档的生成。Doxygen支持多种格式,非常灵活,但排版不好就会显的比较杂乱,不便于阅读。下面给出一份注释模板。一、文件注释,放于文件的开头[cpp] view plaincopy/** * @file filename * @brief This is a bri转载 2012-11-08 18:28:15 · 8947 阅读 · 0 评论 -
UCOS-II之字节对齐问题 sprintf
用到ucos这个操作系统,简单容易移植,占用资源少。一般来说,在ucos上运行标准C函数应该是没有什么问题的。这时候问题就出现了 当ucos运行到Cortex-M3上时候,这个时候使用sprintf进行浮点数格式化输出的时候就会有些问题,无法正常输出浮点数,操作系统也会停止运行,处于崩溃状态。 操作系统崩溃有很多原因,我遇到的两个原因是:堆栈溢出和数据对齐。不知道首先遇到的是哪个问题,如果使用MD转载 2012-12-30 15:46:46 · 3696 阅读 · 2 评论 -
source insight 宏的使用
1推荐使用source insight 的宏可以给编程工作带来较高的效率, 编写宏并不难, 只要参看已有的宏,基本就能写出自己想要的宏, 另外可以参考source insight的官方网站的帮助 http://www.sourceinsight.com/v2help/htm/helpcontents1.htm .使用方法1. Project->Open Projec转载 2013-04-06 14:25:07 · 1018 阅读 · 0 评论 -
c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Unix时转载 2013-04-15 09:28:07 · 702 阅读 · 0 评论 -
HEX文件和有效的BIN数据大小关系
一个字节的数据,用文本来表示时,至少需要两字节,另外再加上地址以及其他信息,所以HEX文件是二进制文件大小的两倍还多。QUESTIONWhat is the INTEL.html">INTEL HEX file format?ANSWERThe INTEL.html">INTEL HEX file is an ASCII text file withLINEs of原创 2013-04-20 15:07:03 · 2544 阅读 · 0 评论 -
C语言字符串转数值
常用到字符串和数字的转换搜集整理 方便以后再用atof(将字符串转换成浮点型数)atoi(将字符串转换成整型数)atol(将字符串转换成长整型数)strtod(将字符串转换成浮点数)strtol(将字符串转换成长整型数)strtoul(将字符串转换成无符号长整型数)toascii(将整型数转换成合法的ASCII 码字符)toupper(将小写字母转换成大写字转载 2013-05-21 21:03:00 · 859 阅读 · 0 评论 -
四种GCC内置位运算函数
int __builtin_ffs (unsigned int x)返回x的最后一位1的是从后向前第几位,比如7368(1110011001000)返回4。int __builtin_clz (unsigned int x)返回前导的0的个数。int __builtin_ctz (unsigned int x)返回后面的0个个数,和__builtin_clz相对。int __built转载 2013-09-01 18:06:42 · 3804 阅读 · 0 评论 -
The stack plug-in failed to set问题
IAR调试CC2530程序,出现The stack plug-in failed to set a breakpoint on "main". The Stack window will not be able to display stack contents. (You can change this setting in the Tool>Options dialog box.)的警告,程序原创 2013-11-04 23:18:11 · 2465 阅读 · 0 评论 -
C语言编程过程详解
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下: 从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括转载 2014-03-30 22:05:29 · 1063 阅读 · 0 评论 -
C语言双感叹号作用!!
两个!是为了把非0值转换成1,而0值还是0。因为C语言中,所以非0值都表示真。所以!非0值 = 0,而!0 = 1。所以!!非0值 = 1,而!!0 = 0。原创 2014-04-17 09:38:26 · 16774 阅读 · 1 评论 -
面向对象编程中的继承和组合的简单比较
继承(inheritance),是类 D 的对象可以使用仅对类C的对象有效的方法或者属性的特性,它使得这些方法和属性就好像是由类 D 定义的。这时,C 是 D 的父类,D 是 C 的子类。在继承结构中,父类的内部细节对于子类是可见的。所以我们通常也可以说通过继承的代码复用是一种“白盒式代码复用”。组合(composition),是通过对现有的对象进行拼装(组合)产生新的、更复杂的功能。因为在对转载 2014-04-20 16:20:51 · 1553 阅读 · 0 评论 -
自己动手扩展vim插件——code_complete.vim篇
自己动手扩展vim插件——code_complete.vim篇By 马冬亮(凝霜 Loki)一个人的战争(http://blog.csdn.net/MDL13412)插件简介 code_complete.vim是一款通用插件,具有用于补全函数参数,插入代码片段等功能。目前插件作者已经将项目迁移到GitHub上进行托管。 下图是官转载 2014-12-13 21:53:19 · 1233 阅读 · 0 评论 -
Linux -gdb如何显示宏定义的值
本文大概阐述如何让gdb能够显示宏定义的值以及对应的原理gcc默认编译的时候,gdb调试过程中是不能看到宏定义的,"p 宏名" 会显示错误,如下:(gdb) p CLIENT6_BEGIN_FLGNo symbol "CLIENT6_BEGIN_FLG" in current context.(gdb)其中 #define CLIENT6_BEGIN_FLG ""这样g转载 2015-07-19 17:58:00 · 4111 阅读 · 0 评论 -
CMake交叉编译配置
很多时候,我们在开发的时候是面对嵌入式平台,因此由于资源的限制需要用到相关的交叉编译。即在你host宿主机上要生成target目标机的程序。里面牵扯到相关头文件的切换和编译器的选择以及环境变量的改变等,我今天仅仅简单介绍下相关CMake在面对交叉编译的时候,需要做的一些准备工作。 CMake给交叉编译预留了一个很好的变量即CMAKE_TOOLCHAIN_FILE,它定义了一个文件的路径,转载 2015-09-13 21:11:22 · 867 阅读 · 0 评论 -
C++串口编程实例
在windows程序设计与开发过程中,特别是涉及到开发嵌入式软硬件系统时,往往会涉及到串口编程。网上以及一些书籍上讲解windows下的串口编程知识也挺多的,但我个人觉得,看完书上的知识点有时依然不知道该如何下手开始自己的程序设计和代码编写,许多知识如果能结合着详细的例子往往能够帮助我们学习得更快,所以,在此,我专门为串口编程初学者设计了一个详细的例子,供大家参考和学习。 下面我将自转载 2012-09-13 17:56:06 · 1431 阅读 · 1 评论 -
用Windows API 编写串口通讯程序
最近在做一个PC机上和ARM机串口通讯的程序。 实际上,我并没有在VC上编写过串口程序。记得大一下学期的课程实践上倒是在DOS环境下做个简单的串口通讯,可是就是因为太简单了,而且是DOS那种独占式的进程,所以现在要搬到VC和MFC界面应用程序环境中,难度还是有的,我一时没有头绪。 我首先当然想到用ActiveX控件了。曾听说过Microsoft曾做过一个ActiveX控转载 2012-09-13 16:53:28 · 1061 阅读 · 0 评论 -
如何在编译器(vs2008)里设置调用别人写好的lib和dll
如何在编译器(vs2008)里设置调用别人写好的lib和dll步骤:1.Tools->options->projects and solutions->VC++ directories分别在包含文件,库文件填加了路径 (这些路径只告诉编译器怎么找文件,没有说把那里面的文件加入工程.) (若不设置,编译报错:无法打开***文件转载 2012-08-27 08:36:08 · 922 阅读 · 0 评论 -
C语言读取类unix风格配置文件
C语言读取类unix风格配置文件2010-01-17 22:51 380人阅读 评论(0) 收藏 举报[c-sharp] view plaincopy/*************************************************** *转载 2012-04-25 21:13:22 · 1239 阅读 · 0 评论 -
C: assignment discards qualifiers from pointer target type
C: assignment discards qualifiers from pointer target type2010年05月20日 星期四 13:09这个warning说明,返回值是一个const的类型,而你声明使用的那个变量不是const,场景如下:u_char *p = pcap_next(**, **);因为pcap_next返回的是一转载 2012-05-03 21:37:24 · 8415 阅读 · 0 评论 -
#pragma详解
#pragma求助编辑百科名片在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。转载 2012-05-05 16:56:53 · 3981 阅读 · 0 评论 -
IAR中断定义 #pragma vector
IAR for AVR 学习笔记1--中断定义单片机在AVR编程一直是C,从ICC->GCC->IAR IAR是一个唯一自己选择的.ICC由于入门容易所以选择了开始,GCC因为不要钱,所以后来就用了它.随着对GCC的不断认识,缺点不断显露,开始对IAR产生了兴趣. IAR在51,AVR,ARM的C上都是非常优秀的,它针对不同的单片机都有不同的C版本.唯转载 2012-05-05 17:03:39 · 27451 阅读 · 0 评论 -
__FILE__, __FUNCTION__, __LINE__
__FILE__, __FUNCTION__, __LINE__2008-07-25 19:19 9386人阅读 评论(1) 收藏 举报调试常用的 __FILE__, __FUNCTION__, __LINE__调试常用的 __FILE__, __FUNCTION__, __LINE__没想到 VC6 不支持 __FUNCTION__所以转载 2012-05-05 09:26:34 · 29306 阅读 · 0 评论 -
linux编程(C语言读取配置文件)
linux编程(C语言读取配置文件)2009年10月31日 星期六 15:49#include#include#include#include#include#define BUFFSIZE 100int read_cfg(const char *file_name,const char *key,char *value){转载 2012-04-23 16:33:50 · 4169 阅读 · 0 评论 -
从printf谈可变参数函数的实现
1. 使用情形双击代码全选12345678inta =10;doubleb = 20.0;char*str = "Hello world";printf("begin print");printf("a=转载 2012-05-08 21:41:20 · 1136 阅读 · 0 评论 -
从printf谈可变参数函数的实现
1. 使用情形int a =10;double b = 20.0;char *str = "Hello world";printf("begin print");printf("a=%d, b=%.3f, str=%s", a, b, str);... 从printf的使用情况来看,我们不难发现一个规律,就是无论其可变的参数有多少个,printf的第一转载 2012-05-09 09:06:04 · 623 阅读 · 0 评论 -
Type-length-value数据格式
Type-length-valueFrom Wikipedia, the free encyclopediaWithin data communication protocols, optional information may be encoded as a type-length-value or TLV element inside of the pro转载 2012-06-07 14:52:16 · 3540 阅读 · 0 评论 -
EOF是什么?
EOF是什么?作者: 阮一峰日期: 2011年11月12日我学习C语言的时候,遇到的一个问题就是EOF。它是end of file的缩写,表示"文字流"(stream)的结尾。这里的"文字流",可以是文件(file),也可以是标准输入(stdin)。比如,下面这段代码就表示,如果不是文件结尾,就转载 2012-06-17 21:22:42 · 870 阅读 · 0 评论 -
C语言中的空指针、空指针常量、NULL & 0
C语言中的空指针、空指针常量、NULL & 0 本文转自:http://bbs.chinaunix.net/viewthread.php?tid=544415&extra=&page=7 帖子里讨论了C语言中的空指针、空指针常量、NULL、0等概念及相互关系及区别。这里摘录whyglinux兄的总结。做个标签,呵呵^_^转载 2012-06-19 19:54:43 · 29653 阅读 · 1 评论 -
函数的副作用
函数的副作用函数副作用 指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。例如修改全局变量(函数外的变量)或修改参数。 函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并且降低程序的可读性。严格的函数式语言要求函数必须无副作用。 函数的副作用相关的几个概念, Pure Function、 Impure转载 2012-07-06 16:43:35 · 710 阅读 · 0 评论 -
static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量
static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量2人收藏此文章, 我要收藏发表于2年前 , 已有1077次阅读 共2个评论作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量作用域:作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了作用域)。变量的有效作用域从它的定义点转载 2012-06-25 21:24:39 · 3071 阅读 · 0 评论 -
边界对齐问题
结构体边界对齐 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。这种强转载 2012-06-28 16:18:50 · 12440 阅读 · 3 评论 -
内存管理内幕
为什么必须管理内存内存管理是计算机编程最为基本的领域之一。在很多脚本语言中,您不必担心内存是如何管理的,这并不能使得内存管理的重要性有一点点降低。对实际编程来说,理解您的内存管理器的能力与 局限性至关重要。在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、 半手工的以及自动的内存管理实践的基本概念。追溯到在 Apple II 上进行汇编语言编程的时代,转载 2012-06-29 09:07:42 · 1014 阅读 · 0 评论 -
VS2008 创建DLL和调用DLL
VS2008 创建DLL和调用DLL (2011-11-04 11:55:13)转载▼标签: 杂谈分类: DLL隐式链接就是在程序开始执行时就将DLL文件加载到应用程序当中。隐式链接必须的文件:lib .显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作到的转载 2012-09-04 08:49:41 · 783 阅读 · 0 评论 -
总结几种log打印printf函数的宏定义
[c-sharp] viewplaincopy#include #define lU_DEBUG_PREFIX "##########" #define LU_DEBUG_CMD 0x01 #define LU_DEBUG_DATA 0x02 #define LU_DEBUG_ERROR 0x04 #define L转载 2016-03-26 20:32:58 · 7895 阅读 · 0 评论