Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio检查迭代器未引发异常_C++_Visual Studio 2010_Visual Studio_Iterator - Fatal编程技术网

C++ Visual Studio检查迭代器未引发异常

C++ Visual Studio检查迭代器未引发异常,c++,visual-studio-2010,visual-studio,iterator,C++,Visual Studio 2010,Visual Studio,Iterator,我有以下代码: #ifdef _DEBUG #define _SECURE_SCL 1 #define _SECURE_SCL_THROWS 1 #else #define _SECURE_SCL 0 #define _SECURE_SCL_THROWS 0 #endif #include <iostream> #include <vector> using namespace std; int main() { vector <int>

我有以下代码:

#ifdef _DEBUG
#define _SECURE_SCL 1
#define _SECURE_SCL_THROWS 1
#else
#define _SECURE_SCL 0
#define _SECURE_SCL_THROWS 0
#endif

#include <iostream>
#include <vector>


using namespace std;




int main()
{
    vector <int> v1;
    v1.push_back(33);

    vector <int>::iterator it1 = v1.begin();

    try 
    {
        it1++;

        it1++;
    }
    catch (...) 
    {
        cout << "vector is empty!!" << endl;
    }

    return 0;
}
\ifdef\u调试
#定义安全SCL 1
#定义安全SCL抛出1
#否则
#定义\u安全\u SCL 0
#定义\u安全\u SCL\u抛出0
#恩迪夫
#包括
#包括
使用名称空间std;
int main()
{
向量v1;
v1.推回(33);
向量::迭代器it1=v1.begin();
尝试
{
it1++;
it1++;
}
捕获(…)
{
库特
选中迭代器是指将引发异常的迭代器
如果试图越过边界,则调用无效的_参数
容器的顶部


您的示例代码没有移动迭代器,因此我认为抛出任何内容都是没有意义的。

您没有考虑最重要的部分--
\include

您需要将这些宏放在
#include
行上方。如果您使用的是预编译头,则需要将它们放在预编译头中


因为您问题中的代码不完整,我无法判断您是否做对了。我怀疑您没有做对,所以我提供了这个答案。

新版本的Visual C++库(捆绑在Visual Studio 2010中)不支持从选中迭代器引发异常。请参见

我认为在包含vector的标题之前,您需要定义这些宏。@NathanMonteleone:他根本不应该定义这些宏。根据他链接的文章,他应该使用
/DúDEBUG/EHsc/MDd
进行编译。如果我定义这些宏,这不一样吗e源代码中的宏?顺便说一下/EHsc处于活动状态和/MDdtoo@MooingDuck:根据链接文章,即使在调试模式下,
\u SECURE\u SCL\u THROWS
的默认值也为零。他确实需要自己定义它们。谢谢,但这并没有解决我的问题,我更改了问题的代码,虽然谢谢,我试着将其移到它们上方但是没有任何改变。除了编译器告诉我“警告CRT1008:_SECURE_SCL_THROWS不推荐”@JohnnyPauling:如果您查看发出该消息的
#warning
行,附近是否有提示其他方法的注释?不幸的是..否:(1>VSProject.cpp 1>D:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\include\yvals.h(252):warning CRT1008:_SECURE_SCL_THROWS已被弃用1>array.cpp 1>生成代码…@JohnnyPauling:我的意思是查看第252行附近的yvals.h。它应该像双击警告一样简单。但是看到我的新答案。谢谢你,本,但是异常抛出似乎已被弃用解决了问题,但文档可能是c学习者:谢谢you@JohnnyPauling:看起来他们确实修复了下一版本的文档: