Редактировать: Для тех из вас, кто ищет ответ на вопрос, как указано, стандарт ограничивает число вложенных циклов во время компиляции. Во время выполнения это другая проблема, поскольку единственным ограничением будет размер сегмента программы.
Решено: Я слишком рано искал процесс сборки. Файл c получает дальнейшую предварительную обработку. Выкл. К последующим шагам.
У меня проблема с кодом c, сгенерированным через perl из языка, который применяет правила для генерации произношения. По сути, ввод представляет собой огромный словарь исключений для правил произношения. Код пронизан gotos, и он работал до тех пор, пока один из словарей исключений не достиг 23K правил.
Код в основном не читаемый, но мне удалось заставить код c компилироваться после удаления того, что выглядит как 6200-й вложенный цикл:
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 */
}
}
}
И gcc, и 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
Я нашел эту ссылку и попробовал многие из предложенных исправлений без успеха.
По устаревшим причинам я должен скомпилировать 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. Мне пришлось прикоснуться к некоторой основной логике, к которой я не чувствую себя комфортно, чтобы осуществить это, и я надеялся вернуться к первоначальной конфигурации.