最近忙碌 一直没空上来写东西。前几天折腾了一把SPI总线用TI的430单片机来读取SPI flash数据,搞的灰头土脸的但是好歹还是搞定了。就拿出来滥竽充数一下。SPI是当前用的比较多的硬件总线,结构很简单,一共只要4根线就可以了。 其中两根是数据线,名字等会说,一根时钟线,叫SCK; 一根是片选线(CS)。4根线的连接见下面:SPI的典型应用中,通信的双方一个是主(Master),一个是从(sl
每个语句内嵌表达式都是一个可以声明局部跳转标签的域。一个局部标签只是一个标识符:你可以使用通常的goto语句跳到它--但是只能在它所属的域内这么做。一个局部标签的申明如下:__label__ label;或者:__label__ label1, label2, ...;局部标签的申明必须在语句内嵌表达式的开始出,紧跟({后面,在所有通常申明的左边。局部标签申明只是定义了标签的名字,但是并没有定义标
我收集了一些gcc相关的知识,提供给没时间或者没兴趣了解gcc太多细节知识的朋友。但是这些知识确实又是作为一个gcc使用者应该知道的。q:gcc的全称是什么:a: gcc 是 gnu compiler collecti 编译器套装),它不仅仅只是编译c语言的编译器,它提供了对c、面向对象的c(object c), c++, java, ada 语言的编译服务。 过去有一段时间,它被成为gnu c
记得当年在学老谭的那本C语言的书的时候,书中明确说两个结构体变量间赋值需通过对结构体内各个变量的复制来进行,而不能直接用=号来赋值。今天我还笑话了一把实验室同学的无知,结果在gcc中写了一段代码,真的可以对结构体变量直接复制,代码如下://test.cstruct ccc{ int t;};struct abc{ int a;&nbs
在不知道一个函数所接收到的参数的个数或类型的情况下,我们可以用GCC有一套内建函数记录下参数并将他们用于调用其他的函数。你也能够在不知道一个函数的返回类型的情况下获得函数调用的返回结果,然后再返回这个结果(只要调用你所在函数的调用者能接收这个返回值的数据类型)。Built-in Function: void * __builtin_apply_args ()这个内建函数返回一个指向某些数据的指针,
所谓内嵌函数就是定义于另一个函数内部的函数.(GNU C++不支持内嵌函数) 内嵌函数名在它被定义的块中是局部有效的。例如这里我们定义了一个函数squre并调用了它两次:foo ( double a, double b ){double square (double z) { return z * z; }return square (a) + square (b);}包含内嵌函数的函数内
你可以使用一元操作符&&得到在当前函数(或包含函数)中定义的标签的地址.得到的值的类型是void*。这个值是一个常量,可以在任何使用这个类型的常量的地方使用。例如:void *ptr;...ptr = &&foo;这个变量可用于跳转到某个位置--例如使用goto语句 go *exp. 例如:goto *ptr;在这里 任何void *类型的表达式都是合法的。标签常量
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号