Трабла с макросом assert за номером С3861
От: Develop7 Беларусь  
Дата: 10.04.06 21:21
Оценка:
Итак, в следующем коде:

#include <cassert>
// поскипано
void IntArrayRC::check_range(int ix)
{
    assert(ix >= 0 && ix < _size);
}


VS .NET говорит вот что —

f:\Visual Studio Projects\ArrayClass\IntArrayRC.cpp(17): error C3861: 'assert': identifier not found, even with argument-dependent lookup


Проект создавался мастером как консольное приложение Win32, затем в него был добавлен класс IntArrayRC (также мастером). Также пробовал включать и Assert.h — реакция та же. Ошибка проявляется только в отдельно взятом проекте, а минимальный вариант —
#include <cassert>
void main(void) {
    int i = 1;
    assert(i);
}

компилируется без ошибок.

Доктор, мне можно помочь?
Re: Трабла с макросом assert за номером С3861
От: korzhik Россия  
Дата: 10.04.06 21:48
Оценка: 1 (1)
Здравствуйте, Develop7, Вы писали:

D>Итак, в следующем коде:


D>
D>#include <cassert>
D>// поскипано
D>void IntArrayRC::check_range(int ix)
D>{
D>    assert(ix >= 0 && ix < _size);
D>}
D>


D>VS .NET говорит вот что —


D>
D>f:\Visual Studio Projects\ArrayClass\IntArrayRC.cpp(17): error C3861: 'assert': identifier not found, even with argument-dependent lookup
D>


меня интерисует полная последовательность инклудов в файле где происходит определение класса IntArrayRC,
также интерисует используется ли precompiled headers (stdafx.h)

В общем сразу скажу что #include "StdAfx.h" должен быть первым, то есть примерно так:
#include "StdAfx.h"
#include ".\intarrayrc.h"
#include <cassert>
Re: Трабла с макросом assert за номером С3861
От: rg45 СССР  
Дата: 10.04.06 21:49
Оценка:
"Develop7" <51339@users.rsdn.ru> сообщил/сообщила в новостях следующее: news:1840958@news.rsdn.ru...
> Итак, в следующем коде:
>
>
> #include <cassert>
> // поскипано
> void IntArrayRC::check_range(int ix)
> {
> assert(ix >= 0 && ix < _size);
> }
>

>
> VS .NET говорит вот что —
>
>
> f:\Visual Studio Projects\ArrayClass\IntArrayRC.cpp(17): error C3861: 'assert': identifier not found, even with argument-dependent lookup
>

>
> Проект создавался мастером как консольное приложение Win32, затем в него был добавлен класс IntArrayRC (также мастером). Также пробовал включать и Assert.h — реакция та же. Ошибка проявляется только в отдельно взятом проекте, а минимальный вариант —
>
> #include <cassert>
> void main(void) {
> int i = 1;
> assert(i);
> }
>

> компилируется без ошибок.
>
> Доктор, мне можно помочь?

Вечно с этими макросами какие-то траблы
Судя по всему в каком-то из заголовков этого проекта этому макросу делается #undef.
Можно выкрутиться, если вставить в своем коде:
#ifndef assert
#define assert(x) if(!(x)) throw std::out_of_range(#x)
#endif
Posted via RSDN NNTP Server 2.0
--
Справедливость выше закона. А человечность выше справедливости.
Re: Трабла с макросом assert за номером С3861
От: Develop7 Беларусь  
Дата: 12.04.06 18:46
Оценка:
Вот архив с проектом.
здесь
Посмотрите плиз кто-нить, почему не #define'тся макрос assert из assert.h.
Я понимаю, что скорее всего ошибка очевидна и элементарна, однако понять, в чем грабли, самостоятельно мне пока не удалось. Спасибо.
Re[2]: Трабла с макросом assert за номером С3861
От: Develop7 Беларусь  
Дата: 12.04.06 18:51
Оценка:
Здравствуйте, korzhik, Вы писали:

K>В общем сразу скажу что #include "StdAfx.h" должен быть первым, то есть примерно так:

K>
K>#include "StdAfx.h"
K>#include ".\intarrayrc.h"
K>#include <cassert>
K>


Работает. Спасибо! С причинами постараюсь разобраться сам.
Re[2]: Трабла с макросом assert за номером С3861
От: Develop7 Беларусь  
Дата: 12.04.06 18:52
Оценка:
Здравствуйте, Develop7, Вы писали:

D>Вот архив с проектом.

D>здесь
D>Посмотрите плиз кто-нить, почему не #define'тся макрос assert из assert.h.
D>Я понимаю, что скорее всего ошибка очевидна и элементарна, однако понять, в чем грабли, самостоятельно мне пока не удалось. Спасибо.

Ой... извините — не прочитал тред полностью. Проблема решена (см. выше), тему можно закрыть. Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.