2014-10-12 6 views
1

Я уверен, что у меня есть проблемы с ограничениями в проекте, построенным с использованием Visual Studio 2005. Согласно Microsoft documentation, я могу контролировать проверку границ с помощью _SECURE_SCL. Он уверяет меня, что он включен по умолчанию - любезно предоставлен #define _SECURE_SCL 1. Я, конечно, не могу его найти, и если я поместил это определение в stdafx.h, он ни с чем не конфликтует. Я что-то упускаю? Что такое «обычный» способ использования _SECURE_SCL?Где _SECURE_SCL обычно находится?

+0

Согласно связанному документу, _SECURE_SCL применим только для итераторов, а не для всех файлов std :: vector. – deviantfan

+0

Но 99% способов доступа к моим векторам осуществляется через .front(), .back() или operator [], все из которых явно указаны в этой документации ... поэтому он кричит релевантность для меня :-) – omatai

ответ

2

По умолчанию он определен в файле заголовка yvals.h.

  • Если оба _ITERATOR_DEBUG_LEVEL и HAS_ITERATOR_DEBUGGING не определены, HAS_ITERATOR_DEBUGGING по умолчанию 1 в отладочных.
  • Если _SECURE_SCL не определен, и HAS_ITERATOR_DEBUGGING определяются как 1, _SECURE_SCL по умолчанию для 1

Различных правил вступают в игру, если _ITERATOR_DEBUG_LEVEL определен. Дополнительную информацию см. В файле заголовка.

+0

Спасибо , Я все еще не вижу, как (или если) yyvals.h включен, но, по крайней мере, код в нем значительно упрощает то, что происходит, чем документация MS. – omatai

+1

OK - _ITERATOR_DEBUG_LEVEL, похоже, применяется только от Visual Studio 2012 и далее. VS2005 знает только о _SECURE_SCL и HAS_ITERATOR_DEBUGGING. yyvals.h включается через , включая , затем , затем , который, наконец, включает yyvals.h. Достаточно хорош для тика от меня - спасибо! – omatai

Смежные вопросы