extern 数组】的更多相关文章

最近比较关注C++对象的Linkage类型,然后今天突然想起extern数组这个奇葩的东西,稍微折腾了一下,顺手写个随笔. 首先在cpp中定义几个数组: ,,,,}; ,,,,}; ,,,,}; 然后再另一个cpp中使用: extern int* extern_array; ]; extern int const extern_array_normal_const[]; int _tmain(int argc, _TCHAR* argv[]) { int address = reinterpre…
error:  #70: incomplete type is not allowed 用sizeof计算数组大小,编译器提示不允许使用不完整的类型.在keil上编译直接报错,拿到vs2010上编译可以通过,但是结果始终为0. 折腾半天终于搞明白其中的原因,原因如下: 1.sizeof的计算发生在代码编译的时候: 2.extern是在链接的时候解析的. 所以extern数组的时候,在.C文件里面只知道有这么个东西,但是具体长啥样不知道,只有到链接的时候才能确定其大小.sizeof在编译的时候ex…
名词解释 1.extern extern翻译为外部的,用在变量或函数之前,使其可见范围拓宽,这就是为啥叫extern吧.那它是用来干嘛的呢?当用在变量或函数之前,提示编译器到其他模块寻找其定义. 举个例子: 在源文件A里定义的函数,在其它源文件里是看不见的(即不能访问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明:  (extern)   函数原型:      这样,在源文件B里也可以调用那个函数了. 2.声明与定义 声明(declaration)仅仅是声明有这么个东西,但是…
基本理解 extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义. extern有两个作用 1.当它与"C"一起连用时,如: extern "C" void fun(int a, int b);告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的(不同编译器不…
汇编语言又叫符号语言 出来机器语言和汇编语言外其他语言必须经过翻译(编译,和解释行)才可以执行 .c --> 编译(翻译成二进制代码 .obj) 链接 把目标程序和库函数以及其他目标程序链接起来,生成可执行的 exe 文件 //从命令行输入 scanf("%d", &a); c程序总是从 main 函数开始执行 程序=数据结构+算法 两大类计算机算法: 数值型运算算法 非数值运算算法 算法特性:有穷性.确定性.有效性 流程图:缺点 箭头太多,程序复杂的时候会很乱 N-S图…
C语言常见问题笔记:    1. 指针的声明     char * p1, p2;  p1 是一个指向char类型的指针,而p2是一个char类型变量  这是由于 * 并不是基本类型的一部分,而是包含被声明标识符的声明符的一部分.    2. 储存类型     同一个静态函数或静态变量最好在所有的声明和定义出都包含(static)  extern 作为一个格式上的提示,表明函数的定义可能出现在另一个源文件中  关健字auto毫无用处,已经过时了   3. 在一个文件中定义了一个extern数组,…
萨米特 (Steve summit) (作者), 孙云 (译者), 朱群英 (译者) 下载地址:点我 <你必须知道的495个C语言问题>以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题.书中列出了C用户经常问的400多个经典问题,涵盖了初始化.数组.指针.字符串.内存分配.库函数.C预处理器等各个方面的主题,并分别给出了解答,而且结合代码示例阐明要点. 编辑推荐 <你必须知道的495个C语言问题>结构清晰,讲解透彻,是各高校相关专业C语言课程很好的教学参考书,…
1.1我该如何决定使用哪种整数类型? 用到较大的数用long:空间很重要(例如有很大的数组或很多的结构)用short:此外用int. win32: int 32bit    4byte char 8bit   1byte   short    16bit 2byte long 32bit 4byte float 32bit   4byte double 64bit    8bit 注:wchar_t在Windows中是2byte,在Linux中是4byte 1.2为什么不精确定义标准类型的大小?…
1. C标准中并没有精确定义数值类型的大小,但作了以下约束: (1) char类型可以存放小于等于127的值: (2) short int和int可以存放小于等于32767的值: (3) long int可以存放小于等于2147483647: (4) char至少有8位,short int和int至少有16位,long int至少有32位,long long至少有64位. 可以在头文件<limits.h>中找到特定机器下上述类型的最大值和最小值. 2. Q:C语言为什么不精确定义标准类型的大小…
/* * d.c * * Created on: Nov 15, 2011 * Author: root */ #include "apue.h" int a[] = {3,2}; void hello() { printf("d.c %d",a); } /* ============================================================================ Name : hello.c Author : Ver…