“一旦声明之后,全局作用域内的名字在整个程序的范围内都可以使用”是不是错了?

申祷无 2016-06-06 10:46:18
《C++ Primer》第五版,中文版。p44。
const int ci2 = ci + 1;
const int ci = 4;
上面的无法通过编译。
...全文
151 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2016-06-07
  • 打赏
  • 举报
回复
C,C++ 变量,函数,类型的定义(声明)是有顺序的 书上这句话,有没有省略这个前提? 或者说自认隐含的提到了这个前提? 一旦声明(定义)以后,一般指的是在声明(定义)的可见范围内(有个顺序问题) 然后 再考虑作用域。 换句话说,作用域可见性,和顺序可见性,是两种不同的可见性 类作用域的,还有个保护可见性(私有,保护 ,友元),继承可见性 模板,还有个 主模板可见性 等等问题。
lin5161678 2016-06-06
  • 打赏
  • 举报
回复
一旦声明之后,全局作用域内的名字在整个程序的范围内都可以使用
const int ci2 = ci + 1;
const int ci = 4;//从这个分号开始 ci 完成声明 
paschen 版主 2016-06-06
  • 打赏
  • 举报
回复
不好意思,是声明ci2的时候,ci还没有声明
paschen 版主 2016-06-06
  • 打赏
  • 举报
回复
声明c2的时候,c1还没有声明,你上面说得很清楚,是一旦声明后
lin5161678 2016-06-06
  • 打赏
  • 举报
回复
你非要觉得书说错了 那就书说错了 记得结论就行了
ForestDB 2016-06-06
  • 打赏
  • 举报
回复
全局作用域内的名字在整个程序的范围内都可以使用,一旦声明之后。 这样会不会好点?
MoshangYanYu 2016-06-06
  • 打赏
  • 举报
回复
引用 4 楼 shendaowu 的回复:
[quote=引用 3 楼 lin5161678 的回复:] 一旦声明之后,全局作用域内的名字在整个程序的范围内都可以使用
const int ci2 = ci + 1;
const int ci = 4;//从这个分号开始 ci 完成声明 
“一旦声明之后,全局作用域内的名字在整个程序的范围内都可以使用”[/quote] 根据我的理解,ci声明在ci2之后,从const int ci = 4;开始,之后的整个程序范围内都可以使用ci了。但是const int ci2 = ci + 1;这句代码写下来的时候ci还没有被声明,所以无法通过编译。如有错误,希望不吝指正
小灸舞 2016-06-06
  • 打赏
  • 举报
回复
“一旦声明之后,全局作用域内的名字在(声明之后的)整个程序的范围内都可以使用”
申祷无 2016-06-06
  • 打赏
  • 举报
回复
引用 3 楼 lin5161678 的回复:
一旦声明之后,全局作用域内的名字在整个程序的范围内都可以使用
const int ci2 = ci + 1;
const int ci = 4;//从这个分号开始 ci 完成声明 
“一旦声明之后,全局作用域内的名字在整个程序的范围内都可以使用”

64,662

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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