社区
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,怎么解决?
...全文
160
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写文章
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只被定义了一次,却声明了多次。
把nacos部署到k8s,却
连接
不上统一
namespace
下的mysql,
问题
已解决
本文详解 Nacos 在 Kubernetes 中无法
连接
同
namespace
下 MySQL 8.0 的三大核心原因:caching_sha2_password 认证机制导致的公钥获取失败、时区不匹配引发的
连接
中断,以及官方启动脚本对 JDBC URL 拼接的逻辑缺陷。解决方案包括添加 allowPublicKeyRetrieval=true 和 serverTimezone=Asia/Shanghai 参数,并优先使用 MYSQL_SERVICE_URL 环境变量覆盖默认拼接。
Linux Network
Namespace
本文介绍Linux network
namespace
如何实现网络隔离,并通过Neutron在OpenStack中为不同租户提供独立的网络服务。利用veth pair
连接
不同
namespace
,解决跨
namespace
间网络设备通信
问题
。
Linux 虚拟网络设备 veth-pair(
namespace
、Bridge、OVS )
本文详细介绍了Linux中的veth-pair虚拟网络设备,它用于
连接
不同的网络设备或
namespace
,实现虚拟网络间的通信。通过实例展示了veth-pair如何在直接
连接
、通过Bridge和通过OVS
连接
两个
namespace
,并解释了ARP过程和连通性
问题
的解决方法。
Linux虚拟化1(
namespace
,veth,bridge)
本文详细介绍了Linux网络命名空间(network
namespace
)、veth对以及Linux Bridge的概念和使用。通过创建veth pair实现两个
namespace
间的通信,建立Linux Bridge并将其与veth接口结合,探讨了网络设备间
连接
与隔离的
问题
。同时,展示了如何通过配置使
namespace
能够访问外部网络,整个过程中涉及的网络配置和通信原理进行了深入解析。
记Android关于Unix abstract socket的
连接
问题
本文探讨了在Android上使用Unix abstract
namespace
socket时遇到的
连接
问题
。通过分析Java和C代码示例,揭示了Android系统在确定address长度上的特殊性,指出不能直接将整个结构体作为长度,而应排除sun_path后的全零padding。解决方案是正确计算地址长度,以确保
连接
成功。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章