谁能解释为什么我在代码后面得到“对'end'的引用是模棱两可的”?我明白这是因为与STD::END发生冲突。但是如果我把结束放在主函数中,它不会显示错误。在全局范围内定义与在主函数范围内定义有何不同?
#include<bits/stdc++.h>
using namespace std;
int *end;
int main() {
return end == NULL;
}
prog.cpp: In function 'int main()':
prog.cpp:7:12: error: reference to 'end' is ambiguous
return end == NULL;
^
prog.cpp:4:6: note: candidates are: int* end
int *end;
^
In file included from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:94:0,
from prog.cpp:1:
/usr/include/c++/5/valarray:1226:5: note: template<class _Tp> const _Tp* std::end(const std::valarray<_Tp>&)
end(const valarray<_Tp>& __va)
^
/usr/include/c++/5/valarray:1216:5: note: template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)
end(valarray<_Tp>& __va)
^
In file included from /usr/include/c++/5/string:51:0,
from /usr/include/c++/5/bits/locale_classes.h:40,
from /usr/include/c++/5/bits/ios_base.h:41,
from /usr/include/c++/5/ios:42,
from /usr/include/c++/5/istream:38,
from /usr/include/c++/5/sstream:38,
from /usr/include/c++/5/complex:45,
from /usr/include/c++/5/ccomplex:38,
from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52,
from prog.cpp:1:
/usr/include/c++/5/bits/range_access.h:97:5: note: template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])
end(_Tp (&__arr)[_Nm])
^
/usr/include/c++/5/bits/range_access.h:78:5: note: template<class _Container> decltype (__cont.end()) std::end(const _Container&)
end(const _Container& __cont) -> decltype(__cont.end())
^
/usr/include/c++/5/bits/range_access.h:68:5: note: template<class _Container> decltype (__cont.end()) std::end(_Container&)
end(_Container& __cont) -> decltype(__cont.end())
^
In file included from /usr/include/c++/5/bits/range_access.h:36:0,
from /usr/include/c++/5/string:51,
from /usr/include/c++/5/bits/locale_classes.h:40,
from /usr/include/c++/5/bits/ios_base.h:41,
from /usr/include/c++/5/ios:42,
from /usr/include/c++/5/istream:38,
from /usr/include/c++/5/sstream:38,
from /usr/include/c++/5/complex:45,
from /usr/include/c++/5/ccomplex:38,
from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52,
from prog.cpp:1:
/usr/include/c++/5/initializer_list:99:5: note: template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)
end(initializer_list<_Tp> __ils) noexcept
^
在使用using namespace std;
将整个std
命名空间引入当前(全局)作用域后,编译器无法区分(globals)int*end
和std::end。避免使用使用名称空间std;
。
无法找出正确的方法来使用匹配器来识别我要处理的exchange方法的重载。我正在打的电话:
我应该如何编写以下Mockito匹配器,以便调用不会有歧义? 我试图在代码中模拟的实际函数调用是:
但是,当我尝试相同的示例时,通过将Integer更改为Object,代码编译得很好,输出为String 谁能帮助我理解为什么当输出来自其中有字符串的方法时,签名中有对象的方法是必需的。以及类型错误不明确的原因是什么。
问题内容: public class Primitive { void m(Number b, Number … a) {} // widening, autoboxing->widening->varargs 我已经搜索过,发现加宽优先级比拆箱优先,因此在上述方法调用中,应该调用第一个方法,因为两个参数都相同。但这不会发生。你能解释一下吗? 问题答案: 它无法在JDK 1.5、1.6和1.7中进
我有一节简单的课 这将输出为10,没有任何错误!!!我原以为这会给我一个ClassCastException,其中有些错误,比如Integer不能转换为HashMap。 出于好奇和愤怒,我尝试了返回值,如下所示
问题内容: 如果在调用时没有设置信号挂起,则线程将被挂起,直到一个或多个挂起。set定义的信号在调用sigwait()时应已被阻止;否则,行为是不确定的。sigwait()对set中的信号的信号动作的影响未指定。 这真的很模棱两可,和这里有什么区别? 而其对如何进行选择的结论并不能完全清楚: 总之,当需要运行代码以响应异步信号来通知线程时,应使用sigwait()处理该信号。或者,如果实现提供信号