1.链接与储存类型;
链接是c语言程序编译的一个步骤,就是对程序引用的外部变量或者函数进行解析,将它们的定义包含到c语言中去,形成一个完整可执行的程序。
例如:c语言中程序声明了 a,b,c三个变量和func函数,其中a,b变量定义均在当前文件中,链接会将c变量定义和func函数定义信息合并到当前程序,形成完整的程序。
c语言链接分为三类:
外部链接(不同源文件引用相同的对象或函数,使用extern修饰的变量或函数)。
内部链接:在同一个源文件中引用相同的对象或者函数,使用static修饰的具有文件作用域的变量或者函数。
无链接:非对象(变量)或函数的标识符;函数形参的标识符;具有块作用域的且五extern修饰的标识符。
2.存储类型分类
c语言规定了auto,register,extern,static四种,用于在变量前面修饰。
(1)auto
块作用域的局部变量,默认是auto自动类型,且auto类型只能修饰局部变量
例如:int a = 100;
auto int a = 100;\\这两者等价
(2)register
不能修饰函数,不能声明全局变量
只能声明块作用域的局部变量函数参数
编译器不能保证一定将变量分配到寄存器,也可以使用auto分配
(3)extern
外部类型,可以修饰变量或函数,作用域与具有文件作用域的普通变量一样,函数没有指明存储类型时 默认是extern类型
(4)static
静态函数,可以修饰变量或函数。
3.两种类型限定词
const :限定声明的变量是不可以修改的常量,该变量在初始化后,始终保持值不变;它修饰的变量也称为只读变量,只要一经定义 就不可以再被赋值修改
volatile :限定声明的变量值可能经常发生改变
注:volatile 修饰的变量特点是 该变量是共享的,也就是可以由多个程序共同访问;
4.常见代码报错类型
error 1: Out of memory 内存溢出
error 2: Identifier expected缺标识符
error 3:Unknown identifier未定义的标识符
error 4: Duplicate identifier 重复定义的标识符
error 5: Syntax error语法错误
error 6: Error in real constant 实型常量错误
error 7: Error in integer constant 整型常量错误
error 8: String constantexceeds line字符串常量超过一行
error 10:Unexpected end of file文件非正常结束
error 11: Line too long 行太长
error 12: Type identifier expected未定义的类型标识符
error 13: Too many open files 打开文件太多
error 14: Invalid file name 无效的文件名
error 15: File not found 文件未找到
error 16: Disk full 磁盘满
error 17: Invalid compiler directive 无效的编译命令
error 18: Too many files 文件太多
error 19:Undefined type in pointer def指针定义中未定义类型
error 20: Variable identifier expected 缺变量标识符
error 21: Error in type 类型错误
error 22: Structure too large 结构类型太长
error 23: Set base type out of range集合基类型越界
error 24: File components may not be files or objectsfile分量不能是文件或对象
error 25:Invalid string length 无效的字符串长度
error 26: Type mismatch 类型不匹配
error 27: Invalid subrange base type 无效的子界基类型
error 28:Lower bound greater than upper bound 下界超过上界
error 29:Ordinal type expected 缺有序类型
error 30: Integer constant expected 缺整型常