c语言本地函数声明非法,c语言语句声明

c 语言中声明和定义的区别 浏览 426 更新 2014 01 16 09 41 标签 c 语言 之前一直搞不清楚声明和定义的区别 直到看了 stackoverflow 上的一篇文章 看完之后 颇有所得 整理如下 希望能帮到还在困惑的童鞋 方法 步骤 1 声明 declaration 指定了一个变量的标识符 用来描述变量的类型 是 类型还是对象 或者函数等 声明 用于编译器 compiler 识别变量名所引 用的实体 以下这些就是声明 extern int bar extern int g int int double f int double 对于函数声明 extern 关键字是可以省略的 class foo 类的声明 前面是不能加 class 的 2 定义是对声明的实现或者实例化 连接器 linker 需要它 定义 来引用内存 实体 与上面的声明相应的定义如下 int bar int g int lhs int rhs return lhs rhs double f int i double d return i d class foo foo 这里已经拥有自己的内存了 对照上面两个函数 你就 应该明白 的用处了吧 3 无论如何 定义 操作是只能做一次的 如果你忘了定义一些你已经声明过的 变量 或者在某些地方被引用到的变量 那么 连接器 linker 是不知道这些 引用该连接到那块内存上的 然后就会报 missing symbols 这样的错误 如果你定义变量超过一次 连接器是不知道把引用和哪块内存连接 然后就 会报 duplicated symbols 这样的错误了 以上的 symbols 其实就是指定义 后的变量名 也就是其标识的内存块 4 总结 如果只是为了给编译器提供引用标识 让编译器能够知道有这个引用 能用 这个引用来引用某个实体 但没有为实体分配具体内存块的过程 是为声明 如果该操作能够为引用指定一块特定的内存 使得该引用能够在 link 阶段唯 一正确地对应一块内存 这样的操作是为定义 5 5 声明是为了让编译器正确处理对声明变量和函数的引用 定义是一个给变量 分配内存的过程 或者是说明一个函数具体干什么用 c 语言中声明和定义的区别 浏览 426 更新 2014 01 16 09 41 标签 c 语言 之前一直搞不清楚声明和定义的区别 直到看了 stackoverflow 上的一篇文章 看完之后 颇有所得 整理如下 希望能帮到还在困惑的童鞋 方法 步骤 1 声明 declaration 指定了一个变量的标识符 用来描述变量的类型 是 类型还是对象 或者函数等 声明 用于编译器 compiler 识别变量名所引 用的实体 以下这些就是声明 extern int bar extern int g int int double f int double 对于函数声明 extern 关键字是可以省略的 class foo 类的声明 前面是不能加 class 的 2 定义是对声明的实现或者实例化 连接器 linker 需要它 定义 来引用内存 实体 与上面的声明相应的定义如下 int bar int g int lhs int rhs return lhs rhs double f int i double d return i d class foo foo 这里已经拥有自己的内存了 对照上面两个函数 你就 应该明白 的用处了吧 3 无论如何 定义 操作是只能做一次的 如果你忘了定义一些你已经声明过的 变量 或者在某些地方被引用到的变量 那么 连接器 linker 是不知道这些 引用该连接到那块内存上的 然后就会报 missing symbols 这样的错误 如果你定义变量超过一次 连接器是不知道把引用和哪块内存连接 然后就 会报 duplicated symbols 这样的错误了 以上的 symbols 其实就是指定义 后的变量名 也就是其标识的内存块 4 总结 如果只是为了给编译器提供引用标识 让编译器能够知道有这个引用 能用 这个引用来引用某个实体 但没有为实体分配具体内存块的过程 是为声明 如果该操作能够为引用指定一块特定的内存 使得该引用能够在 link 阶段唯 一正确地对应一块内存 这样的操作是为定义 5 5 声明是为了让编译器正确处理对声明变量和函数的引用 定义是一个给变量 分配内存的过程 或者是说明一个函数具体干什么用 c 语言中声明和定义的区别 浏览 426 更新 2014 01 16 09 41 标签 c 语言 之前一直搞不清楚声明和定义的区别 直到看了 stackoverflow 上的一篇文章 看完之后 颇有所得 整理如下 希望能帮到还在困惑的童鞋 方法 步骤 1 声明 declaration 指定了一个变量的标识符 用来描述变量的类型 是 类型还是对象 或者函数等 声明 用于编译器 compiler 识别变量名所引 用的实体 以下这些就是声明 extern int bar extern int g int int double f int double 对于函数声明 extern 关键字是可以省略的 class foo 类的声明 前面是不能加 class 的 2 定义是对声明的实现或者实例化 连接器 linker 需要它 定义 来引用内存 实体 与上面的声明相应的定义如下 int bar int g int lhs int rhs return lhs rhs double f int i double d return i d class foo foo 这里已经拥有自己的内存了 对照上面两个函数 你就 应该明白 的用处了吧 3 无论如何 定义 操作是只能做一次的 如果你忘了定义一些你已经声明过的 变量 或者在某些地方被引用到的变量 那么 连接器 linker 是不知道这些 引用该连接到那块内存上的 然后就会报 missing symbols 这样的错误 如果你定义变量超过一次 连接器是不知道把引用和哪块内存连接 然后就 会报 duplicated symbols 这样的错误了 以上的 symbols 其实就是指定义 后的变量名 也就是其标识的内存块 4 总结 如果只是为了给编译器提供引用标识 让编译器能够知道有这个引用 能用 这个引用来引用某个实体 但没有为实体分配具体内存块的过程 是为声明 如果该操作能够为引用指定一块特定的内存 使得该引用能够在 link 阶段唯 一正确地对应一块内存 这样的操作是为定义 5 5 声明是为了让编译器正确处理对声明变量和函数的引用 定义是一个给变量 分配内存的过程 或者是说明一个函数具体干什么用

展开阅读全文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值