未命名的命名空间的问题

lnklo 2010-01-13 07:26:02
//在a.h里
namespace namespace1
{
int i=10;
}
namespace
{
int a=100;
}

//在b.cpp里
#include<iostream>
#include"namespace1.cpp"
using namespace std;
int main()
{
using namespace1::i;
cout<<i<<endl;
return 0;
}

怎么样可以使用a.h里的i,却不能使用a

书上说的“从不跨越文本文件”我不太明白这意思
...全文
220 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lnklo 2010-01-13
  • 打赏
  • 举报
回复
继续求例子。。。
feifanup 2010-01-13
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20090914/11/ce473754-ffe5-4322-bb1a-ebf40ad88d19.html
feifanup 2010-01-13
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/154469/unnamed-anonymous-namespaces-vs-static-functions
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lnklo 的回复:]
不太明白这局部于本文件的意思
//a.cpp里的
static int a=10;
int b=0;

//b.cpp里的
#include <iostream>
#include"a.cpp"
using namespace std;
int main()
{
cout < <a < <endl;
return 0;
}

怎么可以不能使用a,却可以使用b
我这里仍然可以使用静态变量a

[/Quote]

这本书挺强大的,是某个叫搜还是工作室写的??

#include"a.cpp"

这不是好的风格。
回到问题本身 - 作者可能想告诉你对于匿名名字空间中声明的变量的访问,局限于该编译单元; 这里说的“局限于本文件”是这个意思,但是例子用的非常不好 - 实际上现在的主流编译器都是基于编译单元而不是基于源文件的,例如可以认为每个参与编译的.c / .cpp文件都构成一个编译单元。........

懒得写了,有这功夫加我私聊吧,免费C++陪聊!!!
donjin9 2010-01-13
  • 打赏
  • 举报
回复
不明白楼主是为了什么目的要这样做
lnklo 2010-01-13
  • 打赏
  • 举报
回复
麻烦大家帮我写个简单的例子
包含有一个static的变量然后在源文件里编译无法通过
macrojj 2010-01-13
  • 打赏
  • 举报
回复
static int a=10; 不会在编译的时候导出来的。所以它的作用域就在这个域里。
lnklo 2010-01-13
  • 打赏
  • 举报
回复
编译器的问题吗?
vc++
pengzhixi 2010-01-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lnklo 的回复:]
我改成cpp还是没有办法
[/Quote]

如果你在CPP里面定义未命名空间,那么就只能在这个CPP里面使用,其他文件使用不了。
lnklo 2010-01-13
  • 打赏
  • 举报
回复
我改成cpp还是没有办法
zcgzdhxm 2010-01-13
  • 打赏
  • 举报
回复
顶1楼的
lnklo 2010-01-13
  • 打赏
  • 举报
回复
不太明白这局部于本文件的意思
//a.cpp里的
static int a=10;
int b=0;

//b.cpp里的
#include<iostream>
#include"a.cpp"
using namespace std;
int main()
{
cout<<a<<endl;
return 0;
}

怎么可以不能使用a,却可以使用b
我这里仍然可以使用静态变量a
sixbusy 2010-01-13
  • 打赏
  • 举报
回复
不要在.h中定义变量。
在.cpp中定义,.h中extern 一下!
taodm 2010-01-13
  • 打赏
  • 举报
回复
书上教你在.h里定义变量了?
那么,这本书最好换掉。

64,654

社区成员

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

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