Ошибка C ++ (202): слишком длинный токен команды - PullRequest
1 голос
/ 22 июля 2011

У меня вопрос «черного ящика» об ошибке, которая появляется, когда я запускаю симуляцию дискретного события в течение примерно минуты. Все работает нормально и успешно завершается, но система выводит следующее сообщение один раз в какой-то момент во время симуляции:

Error (202): Command token too long

Я никогда не видел ничего подобного. Интересно, что это за «команда»? Возможно, это system("...") вызов, который я совершаю несколько раз в программе, чтобы построить и визуализировать данные, которые она генерирует.

Извините, я не могу предоставить какой-либо код, так как не уверен, откуда исходит ошибка. Есть ли эффективный способ узнать, в какой момент система генерирует это сообщение? Или, в любом случае, вы сталкивались с такой ошибкой в ​​своем собственном опыте программирования на C ++ и, таким образом, подсказывает, откуда она может исходить?

Я использую Ubuntu 11.04 и компилирую с GCC. Ошибка появляется во время выполнения во время моделирования для моделирования, которое особенно длинное (30+ секунд) и не появляется в более коротких случаях. Я должен подчеркнуть, что «ошибка» не останавливает выполнение кода и фактически не вызывает видимых ошибок при визуальном выводе данных моделирования.

Ответы [ 2 ]

2 голосов
/ 22 июля 2011

написать программу, похожую на следующую:

int trials 10000;
string str("ls ");
while( trials--)
{
system( str.c_str() );
str += "a";
cout << "chars in cmd =  " << trials << endl;
}

Он будет последовательно запускать такие команды, как ls, ls a, ls aa, ls aaa, одновременно выводя на консоль информацию о том, что пробная версия # включена.

и если вы правы относительно того, откуда возникла ошибка, в конечном итоге она получит то же сообщение об ошибке "token too long", и если да, то подскажет, сколько символов может быть в cmd. Затем запишите этот предел в вашу настоящую программу на C ++, чтобы он не выдавал ошибку.

Если ошибка не воспроизводится, попробуйте увеличить количество # испытаний, скажем, до 100 КБ. Если этого не произойдет, возможно, ошибка возникла откуда-то еще.

0 голосов
/ 22 июля 2011

Он исходит от лексера, сообщающего, что один из токенов (идентификаторы / токены препроцесса / и т. Д.) В вашей программе довольно длинный.Просмотрите ваш код, чтобы увидеть, есть ли какие-то смехотворно длинные строки или токены препроцессора.

...