C语言
WuAiJiDian
电子、电气、机械 DIY爱好者;
展开
-
sizeof使用
1. 定义:sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with avariable or a type (includin转载 2016-07-31 11:11:44 · 262 阅读 · 0 评论 -
带有const修饰的指针解读
通过实例来看看const所修饰的指针使用方法: 1、 先看一个普通的指针使用。 形式:int *pTmp 含义:一个普通的指向int类型的指针[cpp] view plaincopyprint?int main(int argc, char *argv[]) { int i = 1;转载 2017-09-20 14:03:52 · 237 阅读 · 0 评论 -
编写优质嵌入式C程序
前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉。转载请注明出处:http://blog.csdn.net/zhzht19861011/article/details/45508029摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析转载 2017-08-13 13:24:21 · 2429 阅读 · 0 评论 -
STM32F0非对齐访问引起的硬件错误及其排除
前段时间在用STM32L0芯片时遇到一个硬件错误,主要是内存的非对齐访问导致的。注:CM3内核支持非对齐访问,而CM0不支持非对齐访问。先科普一下,什么是非对齐访问如上图所示,若要访问的变量是int、float、u32类型的(占4字节),则这些变量在内存中,只能以图中0、4、8为起始地址;若要访问的变量是u16类型的(占2字节),则这些变量在内存中,转载 2017-01-12 22:38:31 · 1943 阅读 · 0 评论 -
stm32 堆和栈(stm32 Heap & Stack)【worldsing笔记】
关于堆和栈已经是程序员的一个月经话题,大部分有是基于os层来聊的。 那么,在赤裸裸的单片机下的堆和栈是什么样的分布呢?以下是网摘: 刚接手STM32时,你只编写一个int main(){while(1);}BUILD://Program Size: Code=340 RO-data=252 RW-data=0 ZI-转载 2016-10-02 16:48:04 · 3424 阅读 · 0 评论 -
程序是如何执行的(三)函数调用
一、局部变量与全局变量 函数中出现的变量可以分为局部变量和全局变量,在函数内部定义的变量(没有global语句)就是局部变量,只有在函数内部才能够使用它们。在函数外定义的变量就是全局变量全局变量的作用是增加了函数间数据联系的渠道,全局变量在全部执行过程中都占用存储单元,如果在同一个源文件中,局部变量和全局变量同名,则在局部变量的作用范围内全局变量被屏蔽即它不起作用。 静转载 2016-10-02 15:08:39 · 693 阅读 · 0 评论 -
更改函数的返回地址
这是网络安全老师布置的实验,觉得是大学以来做过的最有意思的一个实验。Task Description:C语言编写程序,包含一个函数,改变函数的返回地址,使函数返回后跳转到某个指定的指令位置,而不是函数调用后紧跟的位置。先上代码:#include void foo(){ int a, *p; p = (int*)((int)&a + 8);转载 2016-10-02 15:05:32 · 740 阅读 · 1 评论 -
代码覆盖率浅谈
在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。本文我们就代码覆盖率展开讨论,也欢迎同学们踊跃评论。首先,让我们先来了解一下所谓的“代码覆盖率”。我找来了所谓的定义:代码覆盖率 = 代码的覆盖程度,一种度量方转载 2016-10-11 09:14:25 · 287 阅读 · 0 评论 -
Violate的应用和作用
以前也是知道violate 的作用,是可变的意思,因为变量可能发生意想不到的变化,用到的时候一定要用最新的数据, 因为很多编译器在编译程序的过程是对程序进行优化,以提高运行效率,这就可能出现这样的情况,用的到变量值不是最新的,而是已经存在在缓存中的值,这样就可能出现莫名其妙的错误,所以对一些易变的变量,加上violate 修饰,编译器在编译过程中就不会对读写这个变量就不会进行优化,转载 2016-09-07 11:19:21 · 1078 阅读 · 0 评论 -
C/C++不同文件夹下包含头文件的方法及#include的使用
本文主要介绍了如何不同文件夹下使用预处理器指示符#include。假设我们有如下一个工程,其中包含了几个源代码文件和头文件。其中main.c是主源代码文件,里面包含main函数。在base中包含:func3.h,func3.c,文件夹main和文件夹func4在main中包含:main.c,func1.h,func1.c和文件夹func2。在func2中包含:func2.h转载 2016-09-04 22:04:10 · 3188 阅读 · 0 评论 -
编写优质嵌入式C程序
前言:这是一年前我为公司内部写的一个文档,旨在向年轻的嵌入式软件工程师们介绍如何在裸机环境下编写优质嵌入式C程序。感觉是有一定的参考价值,所以拿出来分享,抛砖引玉。转载请注明出处:http://blog.csdn.net/zhzht19861011/article/details/45508029摘要:本文首先分析了C语言的陷阱和缺陷,对容易犯错的地方进行归纳整理;分析转载 2017-09-20 21:57:45 · 1924 阅读 · 0 评论