Форум программистов, компьютерный форум CyberForum.ru

Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
30.06.2014, 15:50     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #1
Здравствуйте, можно ли изменить степень вложения в свойствах компилятора или как то обойти ошибку (сокращение и изменение циклов внутри программы невозможно, все возможные слияния циклов уже произведены)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2014, 15:50     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков
Посмотрите здесь:

[Linker Fatal Error] Fatal: Unable to open file 'CXGRIDVCLC6.LIB' C++
Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory C++
Error 1 fatal error C1083: Cannot open include file: 'fstream.h': No such file or directory C++
C++ Error 1 fatal error C1093: API call 'ImportFile' failed '0x80070003' : ErrorMessage:
Error 1 fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
01.07.2014, 12:14     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #21
Цитата Сообщение от ExFau$t Посмотреть сообщение
Скажите, пожалуйста, как сослаться из одного срр во второй, через include?
а вот не из-за этого ли
Цитата Сообщение от ExFau$t Посмотреть сообщение
недопустимая степень вложения блоков
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5347 / 1730 / 320
Регистрация: 10.12.2010
Сообщений: 5,112
Записей в блоге: 3
01.07.2014, 12:27     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #22
Цитата Сообщение от Tulosba Посмотреть сообщение
Все сразу утащат этот чудо-код себе и заработают миллионы.
Вы зря иронизируете. Если автор делает что-то имеющее отношение к науке и т.п. то это вполне реально. Насмотрелся в свое время на такое только в путь.

По делу: попробуйте разбить ваше дикое количество циклов на подпрограммы. Наподобие:
CalcThis(...);
CalcThat(...);
...
CalcLast(...);
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 12:31  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #23
Откуда мне знать что Вы с ним будете делать, я лучше заглушек наставлю, чем на плагиате попадусь. Если не знаете ответ, то он не станет яснее при просмотре кода, и вообще непосредственно к коду никакого отношения не имеет.

Добавлено через 50 секунд
Цитата Сообщение от HighPredator Посмотреть сообщение
Вы зря иронизируете. Если автор делает что-то имеющее отношение к науке и т.п. то это вполне реально. Насмотрелся в свое время на такое только в путь.
спасибо за понимание!
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 12:32  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #24
А подпрограммы влияют на скорость выполнения?
HighPredator
 Аватар для HighPredator
5347 / 1730 / 320
Регистрация: 10.12.2010
Сообщений: 5,112
Записей в блоге: 3
01.07.2014, 12:34     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #25
Цитата Сообщение от ExFau$t Посмотреть сообщение
А подпрограммы влияют на скорость выполнения?
В вашей текущей стадии, вам лучше сосредоточиться на том, чтобы было в принципе чему выполняться, а уже потом задуматься о скорости, если она окажется неприемлимой.
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 12:38  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #26
Проблема в том, что актуальность программы состоит в ее быстродействии по сравнению с аналогами.

Добавлено через 1 минуту
Да и переписывать потом, подгоняя под то, что должно быть, как-то неправильно.
DrOffset
6426 / 3800 / 880
Регистрация: 30.01.2014
Сообщений: 6,595
01.07.2014, 12:55     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #27
ExFau$t, подпрограммы влияют на быстродействие.
Лично мне этот код можно не показывать. Я такого уже насмотрелся.
Архитектуру нужно переработать, а код переписать. Только так можно на корню решить твои проблемы без потери производительности. А еще я уверен, что при правильном проектировании производительность даже может возрасти. По крайней мере можно будет легче локализовать узкое место с помощью профайлера.

Не по теме:


4 года назад приходилось рефакторить код при даунгрейде компилятора (с g++ 3.4 на g++ 2.95). Так вот, там были функции по 3.5 тысяч строк, и они вызывали у g++ 2.95 переполнение стека. Так и решалось все, разбиением на более мелкие части. Код был не мой, достался в сопровождение. Естественно глобально переделывать времени уже не было. Так что, уж поверь, лучше сам перепиши, пока время есть, чем потом тебя будут через несколько лет проклинать сопровождающие это другие программисты.

Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.07.2014, 13:04     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #28
HighPredator, я ТСу ещё в #9 сообщении предложил на функции разбить (а Somebody и вовсе во втором), но он что-то не прислушался.
Цитата Сообщение от DrOffset Посмотреть сообщение
подпрограммы влияют на быстродействие.
Можно было бы предложить замутить inline, но скорее всего это выльется в тот же самый баг компилятора.
А вообще, если уж началась такая гонка за производительностью, и чудо-цЫклы уж никак нельзя подсократить, то вчитайтесь в описание бага, ссылку на который давал Croessmah.
А там написано следующее:
The problem occurs only when you compile the source code as a C++ source file. The source code compiles without errors when you compile it as a C source file.
Надеюсь без перевода понятно, что можно сделать.
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 13:20  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #29
Специфика программы не позволяет разбить на функции, если это удастся их будет невообразимо много, и неизвестно еще станет ли меньше циклов внутри какого-нибудь из них.
HighPredator
01.07.2014, 13:20
  #30

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
HighPredator, я ТСу ещё в #9 сообщении предложил на функции разбить (а Somebody и вовсе во втором), но он что-то не прислушался.
Я просто все ветки не читал, времени столько нет.

ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 13:23  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #31
Это в шапке написано.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11827 / 6806 / 769
Регистрация: 27.09.2012
Сообщений: 16,878
Записей в блоге: 2
Завершенные тесты: 1
01.07.2014, 14:18     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #32
Цитата Сообщение от ExFau$t Посмотреть сообщение
если это удастся их будет невообразимо много
Раз хотите возиться с горой цилов, можете запихинуть по 50 циклов в каждую функцию, вызов 5-6 функций врядли скажется на производительности средь 250+ циклов
но всё же лучше рефакторинг сделать, ИМХО.
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
01.07.2014, 14:38     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #33
ExFau$t, не в обиду вам будет сказано, начинающие программисты зачастую не могут оценить "можность/неможность" какого то решения. Если бы вы выложили кусок кода, вам бы смогли подсказать. Лично у меня ощущение, что как раз таки разбить на функции можно
Хедин
01.07.2014, 15:34
  #34

Не по теме:

ValeryS, а может еще и циклы

C++
1
2
3
4
for (int i = 0; i < n; i++)
       a[i] += 5;
for (int i = 0; i < n; i++)
    a[i] *= 4;
придется объединить :о

ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 15:36  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #35
Поразительная находчивость, как я сразу не догадался!
DrOffset
6426 / 3800 / 880
Регистрация: 30.01.2014
Сообщений: 6,595
01.07.2014, 15:51     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #36

Не по теме:

Цитата Сообщение от ExFau$t Посмотреть сообщение
создавать новую для одного маленького ответа не логично.
Вот так и рождаются функции на 2к строк. Создавать функцию для новой маленькой задачи - не логично.
На самом деле логично и правильно.



Вот как это выглядит со стороны: человек спрашивает, "компилятор не пропускает функции", ему советуют "разбей на более мелкие". Человек говорит: "разбить не могу, задача не позволяет". Ну и что тут можно советовать? Информации-то больше нет никакой. Телепаты в отпусках все.

Вот у меня за все время профессиональной разработки ни разу было такого, чтобы проект нельзя было отрефакторить из-за самой задачи. Были другие причины. Например менеджмент пролюбил все сроки и до сдачи осталось 2 дня. За два дня отрефакторить нельзя, можно только поставить костыли, чтоб оно делало вид, что работает. Или код выдает таким другая контора, менять его нельзя, можно только компилить.
Т.е. в текущей ситуации или менеджмент давит и не дает рефакторить по каким-то политическим или временным причинам, либо просто лень этим заниматься. Если менеджент, то так и надо говорить, мол "код под NDA, выкладывать не могу, рефакторить не могу, т.к. сроки не позволяют, а кода много". Для быстрого обхода был совет скомпилить С++ код как С, если это конечно возможно. Еще можно попытаться сменить компилятор, если это возможно. Майкрософт не предлагает иных решений, кроме тех, что тут уже были озвучены. Пруф. Значит, ИМХО, других решений нет.
Хедин
 Аватар для Хедин
73 / 68 / 36
Регистрация: 17.05.2014
Сообщений: 301
01.07.2014, 16:04     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #37
ExFau$t, при текущем наборе информации вам дали ответы:
1) Разбивать на функции эти самые циклы.
2) Сокращать количество самих циклов.
Где тут кто то пальцы гнул? Иных вариантов вы не получите, потому что на данный момент это самые оптимальные способы. Хотите других решений, докажите, что они не работают. А "я точно знаю, что так не получится, давайте мне еще варианты" без кода - просто пустые необоснованные слова.
Да и не встречал я еще кода, который требовал бы 250 циклов в одной функции
ExFau$t
55 / 55 / 4
Регистрация: 08.05.2012
Сообщений: 448
01.07.2014, 16:07  [ТС]     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #38
Цитата Сообщение от Хедин Посмотреть сообщение
Да и не встречал я еще кода, который требовал бы 250 циклов в одной функции
Загляните в PSpice, там много забавного.
HighPredator
 Аватар для HighPredator
5347 / 1730 / 320
Регистрация: 10.12.2010
Сообщений: 5,112
Записей в блоге: 3
01.07.2014, 16:08     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #39
ExFau$t, у вас есть три варианта развития сюжета.
1) вы тратите время, маскируете имена переменных, комментарии и т.п. в общем все чтобы скрыть конф. информацию, но сохранить логику и выкладываете это сюда, а мы уже дружно думаем, что с этим можно сделать;
2) ищете компилятор который проглотит ваши 100500 циклов;
3) забиваете болт.
Решать вам.

Остальным участникам:

Не по теме:

мужики, ну ешкин кот! имейте совесть, не все всегда были гуру елы-палы! я понимаю, что модераторы вас подраспустили, а не как я - шаг влево-вправо - карта, но все же люди и жизненные ситуации разные бывают

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.07.2014, 16:09     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков
Еще ссылки по теме:

fatal error LNK1318: Unexpected PDB error; OK (0) '' C++
error C2601: 'main' : local function definitions are illegal fatal error C1004: unexpected end of file found C++
Range error: -1 ошибка компилятора выскакивает C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
DrOffset
6426 / 3800 / 880
Регистрация: 30.01.2014
Сообщений: 6,595
01.07.2014, 16:09     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков #40
Я сейчас ради интереса посмотрел списки рассылок Visual Studio, SOF и некоторые другие буржуйские форумы по этой проблеме. Иных решений, кроме тех, что тут уже были озвучены, не предлагается (например). Увеличить число блоков больше 256 каким-то ключом нельзя.
Если настаивать на этой постановке и принять все остальные варианты неподходящими, то задача решения не имеет.
Yandex
Объявления
01.07.2014, 16:09     Fatal error C1061: ограничение компилятора: недопустимая степень вложения блоков
Ответ Создать тему
Опции темы

Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru