c++的一些简单的问题问题?

快要下班的时候开发部的一名尛鲜肉找我帮忙解决一个问题:

   才哥,我们提供给计费组的库在计费主机上编译报错了但是提供给其他组用时没有编译报错。计费也不認说编译器报的是我们代码上的错误,要我解决帮我看看呢,这是报错信息:

我一看是模糊定义是二义性问题,大概有了谱

最开始的想法是找到编译报错的cpp文件,使用g++ -E选项把编译转换单元展开看看到底是哪里重复定义了但是由于计费组的make输出太复杂太长,看不出來于是直接在计费的代码目录下使用find命令全文搜索了“class Message”,发现果真有一个类定义但是有一个问题是开发部这边使用的protocol buffer下面的Message应该是偠用名字空间“google::protobuf”  来限定访问,不应该有这样的问题于是查看了开发部提供的.h文件 赫然有一个“using namespace google::protobuf”,于是谜底揭开了还是开发部这边提供的头文件问题,为什么其他组没有遇到问题那是运气好,别人没有定义全局的Message类

解决办法就是让开发部的小鲜肉把头文件的using namespace google::protobuf去掉,把所有函数参数对象,指针定义Message的地方通过显示的名字空间访问

总的来说还是开发部的代码不规范,既然是要提供库给其他模块那么首先就应该定义一个属于开发部这边的名字空间,所有要提供出去的名称都在这个名字空间下来声明  名字空间就是专门来解决这种問题的,这种错误不应该犯

}

我要回帖

更多关于 一些简单的问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信