C语言
文章平均质量分 57
基斯卡人
这个作者很懒,什么都没留下…
展开
-
inline的使用
inline 的作用还是在于和 static 一起使用,让小函数尽可能的减小开销甚至消除函数开销。 restrict 最重要的还是在于编译器的优化上。 有一个很重要的地方,称为指针别名,是阻碍编译器优化代码的最重要的地方 什么是指针别名? void tmp_plus(int * a, int * b) { for(int i = 0; i < b_len;++i)原创 2016-10-21 15:55:03 · 1019 阅读 · 0 评论 -
vs2010编写dll库供python使用
刚接触这个问题的时候在网上也是搜罗了一大堆,大多数做下来没有成功,原因未知,很可能是我的功底不够吧,这里记录一下我成功的demo,希望能版主其他人。首先就是使用vs2010创建一个dll库(空项目)的工程, 添加源文件(如:hello.cpp)#include <stdio.h>#include <string.h>#include <stdlib.h>#define EXPORT_PKG_D原创 2017-04-11 13:33:42 · 2295 阅读 · 0 评论 -
预处理
预处理器在一般看来,用得最多的还是宏,这里总结一下预处理器的用法。#include <stdio.h>#define MACRO_OF_MINE#ifdef MACRO_OF_MINE#else#endif几个比较实用的用于调试的宏,由C语言自带__LINE__和__FILE__用于显示当前行号和当前文件名 __DATE__和__TIME__用于显示当前的日期和时间 __func__(C原创 2016-10-18 20:31:36 · 271 阅读 · 0 评论 -
效率问题
在计算机的存储器结构中,分为四种层次: CPU寄存器 、高速缓存器 、内存、 硬盘 上述四种存储器的读写速度依次降低。 时间局部性:在访问过某块存储器之后的不久的将来,很可能会再次访问它 空间局部性:在访问过某块存储器之后的不就的将来,很可能访问其邻近的存储器位置。 这段程序的空间局部性比较差,对于一个在内存中大幅度跳跃,无规律跳跃的程序都将影响程序的性能。这个判定对于一个连续的内存块来说原创 2016-10-19 21:58:38 · 423 阅读 · 0 评论 -
为树莓派3B添加一个实时时钟DS1302
1、在系统中安装wiringPi(这个就不多说了很简单) 2、连接ds1302模块和树莓派引脚 连接前需要在ds1302的DTA引脚上添加一个10K的上拉电阻, VCC—3.3V—- GND—0V—- CLK—SCLK—-23 DTA—SDA0—-24 RST—CE0—–27 3、修改程序 ds1302.c的mian函数里有一原创 2016-10-08 10:24:47 · 4208 阅读 · 0 评论 -
函数指针
事实上,函数名出现在赋值符号右边就代表着函数的地址int function(int argc){ /*...*/}...int (*p_fun)(int) = function;int (*p_fuc)(int) = &function;//和上一句意义一致上述代码即声明并初始化了函数指针,p_fun的类型是指向一个返回值是int类型,参数是int类型的函数的指针p_fun(11);(*p原创 2016-10-18 19:40:31 · 283 阅读 · 0 评论 -
指针1
函数名在表达式中总是以函数指针的身份呈现,除了取地址运算符以及sizeof。 对于指针,尽最大的限度使用const保护它,无论是传递给函数,还是自己使用。 在编译器中会有两种NULL(每种环境都有唯一确定的NULL):#define NULL 0#define NULL ((void*)0)有什么区别吗?看起来没什么区别都是0,只不过一个是常量,一个是地址为0的指针。int* temp_int原创 2016-10-18 19:23:01 · 300 阅读 · 0 评论 -
C语言总结1
函数大体上分为内联函数和非内联的普通函数(不写原型直接在main函数上方定义,即使不加’inline’关键字,也能被编译器默认为内联函数),普通函数正确的形式应该为声明与定义分离 函数的另一种分类是,有返回值和无返回值,返回值的类型可以是内建(build-in)的也可以是自己定义的(struct, union之类),无返回值则是void main函数的返回值看似无用,实际上是由操作系统接收,在W原创 2016-10-17 19:41:42 · 439 阅读 · 0 评论 -
C语言错误处理
三个必要的头文件 #include <stdio.h> #include <errno.h> #include <string.h>一个声明 extern int errno;四个重要函数 int ferror(FILE* stream); int feof(FILE* stream); char *strerror(int errnum); void perror(con翻译 2016-10-24 19:31:57 · 695 阅读 · 0 评论 -
Cython使用技巧
背景Python作为最方便的编程语言和丰富的配置而被大家推崇。 但是当我们的模型较复杂,运算量较大的时候,python的短板就会出现,执行速度并不那么理想,加上GIL的限制,让Python开发人员大为担忧,如何摆脱Python的这个短板而又不摒弃使用Python的快感呢?答案就是使用Cython。使用Cython,你可以避开Python的许多原生限制,或者完全超越Python,而无需放弃Pyth...原创 2019-04-09 18:08:41 · 1226 阅读 · 0 评论