在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”. 1. extern修饰变量的声明.举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v.这里需要注意的是,被引用的变量v的链接属性必须是外链接(external)的,也就是说a.c要引用到v,不只是取决于在a.c中声明extern int v,还取决于变量v本身是能够被引用到的.这涉及到c语言的另外一个话题--变量的…
最近看嵌入式文件系统TFFS的源码,看到far关键字,基础不好,惊呆了... /*Specify here which pointers may be far, if any. *Far pointers are usually relevant only to 80x86 architectures. */ 下面是网上盗来的说法,大致上了解一下: far即为远地址,16位模式下(如80x86系列)内存是分段寻址的: (一个段就是 2^16,即64k)指定void far fun1();…
今天学习了scala的多重界定 T >: A <: B 表示T同时有下界和下界,下界为A,上界为B,A为B的子类型.下界必须写在前面,上界必须写在后面,位置不能颠倒. T<:A with B T是A或B的子类. T>:A with B A或B是T的子类 T <% A <% B T同时满足能够即可以通过隐式转换转变为A的类型,也可以通过隐式转换变为B的类型. T : A : B T必须同时满足存在A[T]这种类型的隐式值和B[T]类型的隐式值. 分享下更多的scala资源…
C-C++到底支不支持VLA以及两种语言中const的区别 到底支不支持VLA VLA就是variable-length array,也就是变长数组. 最近写程序的时候无意间发现,gcc中竟然支持下面这种写法: int n = 10; int a[n]; 注意上面的语句是在函数内部写的,也就是n和a都是自动变量. 当时十分疑惑,C语言中数组的长度不应该是常量或常量表达式吗?为什么变量也可以.我将代码在VC中跑了一下,发现编译出错,提示数组的大小未知,说明VC中是不支持VLA的. 那既然有的编译器…
C语言中extern关键字的使用,直接上代码. file1.c文件 #include<stdio.h> extern long power(int); int A = 2; int main() { int n = 10 ,total; total = power(n); printf("total = %d",total); return 0; } file2.c文件 extern A; long power(int n) { long total = 1; int i…