我必须包含两个不同的头文件(一个是标准assert.h),它们都具有断言函数。我无法控制这些头文件(所以我不能改变它们)。我收到一个编译器错误,指出这两个函数之间的冲突。我怎样才能在我的代码中指定来自assert.h的assert函数应该被用来消除这个编译器错误?C++ - 具有相同名称的函数
0
A
回答
0
namespace OtherAssert
{
#include "private_assert.h"
}
//...
void foo()
{
OtherAssert::assert(true); // non-standard assert
assert(true); // the one from standard assert.h
}
+2
这可能让你的代码编译,但没有更多的工作,它(通常)不会链接。链接器将查找'OtherAssert :: assert',并且由于该库(显然)包含':: assert',而链接将失败(除非头中声明的所有函数也被定义为内联函数)。 – 2012-07-23 15:02:42
+0
@JerryCoffin当然取决于细节。 (也许这个函数是内联声明的。) – cdhowie 2012-07-23 15:05:06
+0
@cdhowie:好点。纠正。 – 2012-07-23 15:05:55
相关问题
- 1. 具有相同名称的c#属性
- 2. 具有相同名称
- 3. 具有相同名称的虚拟成员函数的继承
- 4. 具有相同名称参数的http_build_query
- 5. 具有相同名称
- 6. 调用成员C++的功能,但C函数具有相同的名称
- 7. 两个函数具有相同的名称中的R
- 8. 创建一个具有相同名称的函数的包装
- 9. R:两个函数具有相同的名称和::不工作
- 10. 为什么spine.Model具有相同名称的函数原型
- 11. 运行两个javascriptscript文件具有相同的函数名称
- 12. 函数和变量具有相同的名称
- 13. 具有相同函数名称的两个文件Python
- 14. C++具有相同名称但具有不同参数的多个静态函数
- 15. 如何暴露无法直接暴露,具有相同名称的C++函数
- 16. Rabl的 - 具有相同名称的
- 17. 具有相同名称的元素
- 18. XSD与具有相同名称的
- 19. 具有相同名称的PHP变量
- 20. 具有相同名称的textarea
- 21. 具有相同名称的JDBC多列
- 22. 具有相同名称的CodeIgniter路由
- 23. JSON字段具有相同的名称
- 24. 具有相同名称的更改Angular.js
- 25. 具有相同名称的方法
- 26. OLAP - 水平具有相同的名称
- 27. 如何告诉C++使用不同的函数(与另一个函数具有相同的名称)?
- 28. 具有不同名称和相同内容的文件的散列函数
- 29. Boost构建 - 具有相同名称
- 30. 冲突具有相同名称和
[这是一个宏,而不是函数](http://en.cppreference.com/w/cpp/error/assert)。你必须'#undef assert'。不过,我不确定这对你有多好。 – chris 2012-07-23 14:54:14
请发布你正在得到的确切的错误。正如你所看到的,你模糊的问题会导致猜测。 – 2012-07-23 14:56:13
备注:您应该使用'cassert',而不是'assert.h'。当然,当它是一个宏时,名称空间换行并不重要。 – chris 2012-07-23 14:56:57