У меня есть часть кода для компилятора для базовой арифметики (add, diff). В моем файле mparse.y yacc я прочитал ввод из файла в основной функции. Чтобы вызвать синтаксический, я поставил условие следующим образом:using yyparse() и fprintf
if(yyparse()==0)
fprintf(stderr,"Parsing complete.");
последнее утверждение yyparse, после завершения должно быть:
printf("The last statement of yyparse");
Проблема заключается в том, если я использую fprintf() , я получаю следующую абсурдную вывод:
Parsing Complete
The last statement of yyparse.
Принимая во внимание, если я использую Printf вместо fprintf, я получаю нормальный выход.
The last statement of yyparse
Parsing complete.
второй вариант не должен быть правильным, то есть, все утверждения yyparse должны выполняться первым, а затем Printf после если? Почему это странное поведение?
@ HarshS.Kulshrestha И stderr предназначен для ошибок. Все вы упомянутые вы должны перейти на stdout. – EJP