社区
C++ 语言
帖子详情
请教namespace的连接问题
michael122
2011-02-19 10:42:55
如果一个工程中,定义如下三个文件:
//a.h
namespace X{
int i;
}
//b.cpp
#include "a.h"
int main(){}
//c.cpp
#include "a.h"
这样连接出错,X::i多重定义。
如果要多个编译单元共享同一个X::i,怎么解决?
...全文
112
10
打赏
收藏
请教namespace的连接问题
如果一个工程中,定义如下三个文件: //a.h namespace X{ int i; } //b.cpp #include "a.h" int main(){} //c.cpp #include "a.h" 这样连接出错,X::i多重定义。 如果要多个编译单元共享同一个X::i,怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
healer_kx
2011-02-20
打赏
举报
回复
[Quote=引用 8 楼 hqin6 的回复:]
引用 7 楼 michael122 的回复:
谢谢各位,基本功不扎实了。。
真不扎实!!!为啥不用宏定义呢??#ifndef 是干嘛用的????!!!!!!
[/Quote]
这个地方,ifndef确实不好使。。。
mstlq
2011-02-20
打赏
举报
回复
[Quote=引用 9 楼 healer_kx 的回复:]
引用 8 楼 hqin6 的回复:
引用 7 楼 michael122 的回复:
谢谢各位,基本功不扎实了。。
真不扎实!!!为啥不用宏定义呢??#ifndef 是干嘛用的????!!!!!!
这个地方,ifndef确实不好使。。。
[/Quote]
q上问过那鸟楼主……
鸟楼主为了用最小的重现错误,把所以无关代码都删掉了,包括ifndef,写了本帖的版本……
太乙
2011-02-19
打赏
举报
回复
[Quote=引用 7 楼 michael122 的回复:]
谢谢各位,基本功不扎实了。。
[/Quote]真不扎实!!!为啥不用宏定义呢??#ifndef 是干嘛用的????!!!!!!
michael122
2011-02-19
打赏
举报
回复
谢谢各位,基本功不扎实了。。
healer_kx
2011-02-19
打赏
举报
回复
//a.h
namespace X{
int i;
}
是不是应该改成:
//a.h
#ifndef _a_h_
#define _a_h_
namespace X{
int i;
}
__declspec(selectany) int i = 0;
#endif
michael122
2011-02-19
打赏
举报
回复
解决了
//a.h
namespace X{
extern int i;
}
//a.cpp
include "a.h"
int X::i=0;
//b.cpp
#include "a.h"
int main(){}
//c.cpp
#include "a.h"
太乙
2011-02-19
打赏
举报
回复
把a.h改为:
#ifndef _A_H
#define _A_H
namespace X{
int i;
}
#endif
taodm
2011-02-19
打赏
举报
回复
extern
楼主还没搞清楚变量的声明和定义的区别,基本功需要补补了。
mstlq
2011-02-19
打赏
举报
回复
http://topic.csdn.net/u/20080908/21/0B8F0FA4-7DDA-486C-B24C-0A6B52FF7E2E.html
直接从上帖子6楼拷贝的,楼主可以参考
mstlq
2011-02-19
打赏
举报
回复
如果是一个工程,多个源文件,那么如果在1.cpp中定义 int x; 如果2.cpp要访问它怎么办呢? 一般是 在头文件1.h中声明:extern int x;
在2.cpp中使用#include "1.h",这样就避免重复定义,因为int x是定义,为x分配了内存空间,extern int x 只是纯声明,不分配内存空间
如果3.cpp文件要使用,也可以include,反正在这个项目中x只被定义了一次,却声明了多次。
餐厅管理信息系统课程设计
#import "c:\program files\common files\system\ado\msado15.dll" no_
namespace
rename ("EOF","adoEOF") 用_ConnectionPtr指针
连接
数据库:在CmenuManageSysApp类的BOOL InitInstance()函数中加入以下代码: m_...
c odbc
连接
mysql,请问在C语言中,怎么利用ODBC
连接
数据库
当前位置:我的异常网» C语言»请问在C语言中,怎么利用ODBC
连接
数据库请问...
请教
在C语言中,如何利用ODBC
连接
数据库?网上查了一下,说使用ODBC API可以解决,但是不知道该怎么做。哪位高手能提供个例子或者资料也...
sql 2008安装出错 invalid
namespace
文件是从微软官方下载的,之前装过2005~安装出现
问题
,具体日志如下: Overall summary: Final result: 失败: 请查看下面的详细信息 Exit code (Decimal): -2068643839 Exit ...
Java异常之More than one table found in
namespace
(, ) t_user
nested exception is org.hibernate.tool.schema.extract.spi.SchemaExtractionException: More than one table found in
namespace
(, ) : t_user 大概意思是: 从库中找到了多个名字叫 t_user 的表。 很纳闷: ...
请教
税控开票数据aardio如何
连接
从官方
问题
解答中得知数据库是cc3268.dll, 但不知如何
连接
通过反编译软件dot4net获得一些代码,但不知如何实现。望网友能予以指导,能够导出开票明细条目减少财务人员的负担 ...
C++ 语言
65,192
社区成员
250,525
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章