C关键字auto的使用方法

LubinLew 2013-06-19 09:40:28
工作2年了,从来没用过关键字auto,心血来潮用了一把竟然编译错误(gcc 4.4.6),
求解释,auto不能修饰全局变量吗?看过好几本书都说所有变量默认都是auto类型的。

//编译错误的程序
auto int G_int_val;

int main()
{
G_int_val++;
return 0;
}
//error: file-scope declaration of 'G_int_val' specifies 'auto'


//编译OK的程序
int main()
{
auto char ch;
return 0;
}
...全文
640 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigbaldy 2013-06-20
  • 打赏
  • 举报
回复
引用 2 楼 lgbxyz 的回复:
[quote=引用 1 楼 bigbaldy 的回复:] 现在C++11中的auto有了新的含义,自动类型了,用着很爽!
C11的标准有编译器支持吗?[/quote] vs2012
AnYidan 2013-06-19
  • 打赏
  • 举报
回复
The auto and register specifiers give the declared objects automatic storage class, and may be used only within functions. Such declarations also serve as definitions and cause storage to be reserved.
LubinLew 2013-06-19
  • 打赏
  • 举报
回复
网上搜的很不错 auto修饰符的定义里有这么一句“进入包含变量声明的代码时,变量开始存在。当程序离开这个代码块时,自动变量消失了。它所占用的内存可用来做别的事情。”,从“当程序离开代码块时变量消失”、“内存可用来做别的事情”可以推出auto修饰的变量是存储在堆栈中的。而全局变量存储在静态存储区中,所以用auto决不能修饰全局变量
ForestDB 2013-06-19
  • 打赏
  • 举报
回复
auto不能修饰全局变量吗? 不能 看过好几本书都说所有变量默认都是auto类型的。 这里的变量指local的,即你编译OK的程序中的那种,然后是可以省略的。
LubinLew 2013-06-19
  • 打赏
  • 举报
回复
引用 1 楼 bigbaldy 的回复:
现在C++11中的auto有了新的含义,自动类型了,用着很爽!
C11的标准有编译器支持吗?
bigbaldy 2013-06-19
  • 打赏
  • 举报
回复
现在C++11中的auto有了新的含义,自动类型了,用着很爽!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧