Должен ли компилироваться этот код?
От: FreshMeat Россия http://www.rsdn.org
Дата: 28.11.03 15:16
Оценка:
#include <vector>
#include <assert.h>

class some_class
{
public:
    bool method()
    {
        using namespace std;
        for ( unsigned i = 0; i < m_values.size(); i++ )
            assert( true );

        vector<unsigned> qwe;
        return true;
    }
private:
    std::vector<unsigned> m_values;
};

int main()
{
    return 0;
}
Хорошо там, где мы есть! :)
Re: Должен ли компилироваться этот код?
От: Lorenzo_LAMAS  
Дата: 28.11.03 15:17
Оценка:
Единственное, <cassert>. А что, не компилится?
Of course, the code must be complete enough to compile and link.
Re[2]: Должен ли компилироваться этот код?
От: FreshMeat Россия http://www.rsdn.org
Дата: 28.11.03 15:23
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Единственное, <cassert>. А что, не компилится?


Compiling...
main.cpp
c:\projects\tstassert\main.cpp(16) : fatal error C1506: unrecoverable block scoping error

Build log was saved at "file://c:\projects\tstassert\Debug\BuildLog.htm"
tstassert - 1 error(s), 0 warning(s)


справка по Fatal Error C1506 из MSDN

unrecoverable block scoping error

The block was too large to compile.

Possible causes 

* Mismatched curly braces 
* Unusually large function or class


С cassert такая же ошибка. MSVC71
Хорошо там, где мы есть! :)
Re[3]: Должен ли компилироваться этот код?
От: Lorenzo_LAMAS  
Дата: 28.11.03 15:24
Оценка:
Ты привел весь код?
Of course, the code must be complete enough to compile and link.
Re[3]: Должен ли компилироваться этот код?
От: Павел Кузнецов  
Дата: 28.11.03 15:26
Оценка: 3 (1)
Здравствуйте, FreshMeat, Вы писали:

F>
 F> c:\projects\tstassert\main.cpp(16) : fatal error C1506: unrecoverable block scoping error
 F>


Недавно поймали у себя такое же чудо. Ошибка MSVC++7.1 Убери using namespace std;
Posted via RSDN NNTP Server 1.7 "Bedlam"
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[4]: Должен ли компилироваться этот код?
От: FreshMeat Россия http://www.rsdn.org
Дата: 28.11.03 15:27
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>Ты привел весь код?


До последней строчки Других файлов в проекте больше нет.
Хорошо там, где мы есть! :)
Re[4]: Должен ли компилироваться этот код?
От: FreshMeat Россия http://www.rsdn.org
Дата: 28.11.03 15:32
Оценка:
Здравствуйте, Павел Кузнецов, Вы писали:
F>>
 c:\projects\tstassert\main.cpp(16) : fatal error C1506: unrecoverable block scoping error

ПК>Недавно поймали у себя такое же чудо. Ошибка MSVC++7.1 Убери using namespace std;

Очень похоже. Также лечится переносом объявления вектора. А удалось точно отследить когда она возникает? Или получается единственный способ избежать проблем с директивой using, это не использовать ее вообще?
Хорошо там, где мы есть! :)
Re: Должен ли компилироваться этот код?
От: Андрей Галюзин Украина  
Дата: 28.11.03 15:46
Оценка:
Похоже глюк.
Было что-то подобное с using namespace.
Попробуй выделенное. Нечего напрягать компилятор

#include <vector>
#include <cassert>

class some_class
{
public:
  bool method()
  {
    using std::vector;
    for (unsigned i = 0; i < m_values.size(); i++)
      assert(true);

    vector<unsigned> qwe;
    return true;
  }
private:
  std:::vector<unsigned> m_values;
};

int main()
{
  return 0;
}


--
aga
Posted via RSDN NNTP Server 1.7 "Bedlam"
Re[2]: Должен ли компилироваться этот код?
От: FreshMeat Россия http://www.rsdn.org
Дата: 28.11.03 15:57
Оценка:
Здравствуйте, Андрей Галюзин, Вы писали:

АГ>Похоже глюк.

Похоже. В соседней ветке обсуждается.
АГ>Было что-то подобное с using namespace. Попробуй выделенное.
Компиляется.
АГ>Нечего напрягать компилятор
У него работа такая
Общими усилиями исходный пример был свернут до следующего...
namespace test
{
    class some_class {};
}

int main()
{
    for(int i = 0 ; ;) ;
    using namespace test;
    some_class qwe;
    return 0;
}
Хорошо там, где мы есть! :)
Re[3]: Должен ли компилироваться этот код?
От: Андрей Галюзин Украина  
Дата: 28.11.03 16:23
Оценка: 24 (1) +1
F> Общими усилиями исходный пример был свернут до следующего...
F>
F> namespace test
F> {
F> class some_class {};
F> }

F> int main()
F> {
F> for(int i = 0 ; ;) ;
F> using namespace test;
F> some_class qwe;
F> return 0;
F> }
F>


У меня пока получилось вот это

namespace my_ns {

template <typename T>
class Vector
{
};

} // namespace my_ns

void test()
{
  using namespace my_ns;
  for (int i = 0; ; )
    ;
  Vector<int> vec2;
}


Похоже к этому приводит using namespace и for с обявлением переменной до использования какого-либо имени из пространства имен.

--
aga
Posted via RSDN NNTP Server 1.7 "Bedlam"
Re[4]: Должен ли компилироваться этот код?
От: Андрей Галюзин Украина  
Дата: 28.11.03 16:39
Оценка:

namespace my_ns {
  typedef int Vector;
} // namespace my_ns

void test()
{
  using namespace my_ns;
  for (int i = 0; ; )
    ;
  int s = sizeof(Vector);
}


--
aga
Posted via RSDN NNTP Server 1.7 "Bedlam"
Re[5]: Должен ли компилироваться этот код?
От: preloader  
Дата: 28.11.03 17:00
Оценка: 3 (1)
А можно вот так.
namespace xxx {}

int main()
{
using namespace xxx;
for(int i = 0;)
;
int j;
}
Re[3]: Должен ли компилироваться этот код?
От: ssi Россия  
Дата: 30.11.03 13:19
Оценка: +1
Здравствуйте, FreshMeat, Вы писали:

FM>Здравствуйте, Lorenzo_LAMAS, Вы писали:


L_L>>Единственное, <cassert>. А что, не компилится?


FM>
FM>Compiling...
FM>main.cpp
FM>c:\projects\tstassert\main.cpp(16) : fatal error C1506: unrecoverable block scoping error

FM>Build log was saved at "file://c:\projects\tstassert\Debug\BuildLog.htm"
FM>tstassert - 1 error(s), 0 warning(s)
FM>


FM>справка по Fatal Error C1506 из MSDN


FM>
FM>unrecoverable block scoping error

FM>The block was too large to compile.

FM>Possible causes 

FM>* Mismatched curly braces 
FM>* Unusually large function or class 
FM>


FM>С cassert такая же ошибка. MSVC71


Кто мешает использовать Intel 7.1 (если оч. нравится среда .NET, то он встраивается туда), для него такой код не проблема и с шаблонами он не глючит как MSVC71?
Знающие не говорят, говорящие не знают. Лао Цзы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.