Edit: Для тех, кто ищет ответ на вопрос, как указано стандарт ограничивает количество вложенных циклов во время компиляции. Во время выполнения это другая проблема, поскольку единственным ограничением будет размер сегмента программы.Что ограничивает количество вложенных циклов в c?
Решено: Я слишком рано смотрел в процессе сборки. Файл c получает дополнительную предварительную обработку, применяемую к нему. Выполните следующие шаги.
У меня есть проблема с с кодом, генерируемым с помощью Perl с языка, применяет правила для формирования произношения. В сущности вход представляет собой огромный словарь исключений для правил провозглашения. Код пронизан gotos, и он работал до тех пор, пока один из словарей исключений не достиг правил 23K.
Код в основном нечитаемым, но мне удалось сделать с компиляции кода после удаления, что, как представляется, 6200th вложенного цикла:
for (dictionionary1=seed1;dicitonary1<limit1;dictionary1++)
{
for (dictionionary2=seed2;dicitonary2<limit2;dictionary2++)
{
/* .... */
for (dictionionary6199=seed6199;dicitonary6199<limit6199;dictionary6199++)
{
/* two hundred more removed adding one makes it not compile */
}
}
}
Оба НКУ и XLC способны справиться с этим, но AcC 3.73 (на H11.23 PA RISC).
Compiling /home/ojblass/exception_dictionary_a.c...
Loading the kernel...
Pid 18324 killed due to text modification or page I/O error
/bin/ksh: 28004 Bus error(coredump)
*** Error exit code 138
Я нашел эту link и пытались многие из предложенных исправлений без успеха.
По унаследованным причинам я должен составить для 32 бита (он использует 32 битную библиотеку в том, что у меня нет 64 битного аналога для).
maxdsiz = 256 MB (x10000000) tried up to 4 GB
maxssiz = 16 MB (x1000000) tried up to 100MB
maxtsiz = 256 MB (x10000000) tried up to 1 GB
Любые предложения по настройкам компилятора или хорошая ссылка для документирования для aCC 3.73? Я тону в результатах поиска.
Я закодирован обходной путь разорвать словарь на две части, в результате dictionary_an.c и dictionary_az.c. Мне пришлось прикоснуться к какой-то основной логике, я не чувствую себя комфортно, прикасаясь к этому, и я надеялся вернуться к первоначальной конфигурации.
Строго, стандарт C не ограничивает количество циклов; он устанавливает нижнюю границу числа вложенных циклов, которые должны поддерживаться. Все, что имеет 6200 вложенных циклов, ошеломляет. Я должен сомневаться, что это «лучший» способ справиться с этой проблемой. –