Непонятное сообщение об ошибке от компилятора - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, Друзья! При исполнении следующего кода на СИ:
#include <conio.h>
#include <graphics.h>
 
void _ (int x,int y, int color)
{
     setfillstyle (1,color);
     bar (x,y,x+20,y+20);
}
 
main()
{
      int x=0, y=300;      
      initwindow (400,400);
      setfillstyle (1,9);
      floodfill (x,y,0);
      
      while (x+20<400)
      {
            if (kbhit())
            {
               if (getch() == 27) break;
            }
            _ (x,y,14);
            delay ( 20 );
            _ (x,y,9);
            x++;
      }
      closegraph();
}
компилятор Dev-C++ выдает странную ошибку: In function `Z1_iii'. Причем, если я процедуру назову именем из 2х символов(например - Dr), то компилятор выдаст такую ошибку: In function `Z2Driii'. А если из 10 символов(например - gfdfsgdsfg), то такую: In function `Z10gfdfsgdsfgiii'. Подскажите пожалуйста, зачем это он благим матом разговаривает и как его успокоить?

Решение задачи: «Непонятное сообщение об ошибке от компилятора»

textual
Листинг программы
#include <graphics.h>
 
void _(int x, int y, int color)
{
   setfillstyle(1, color);
   bar(x, y, x + 20, y + 20);
}
 
int main()
{
   int x = 0, y = 300;
 
   int driver = DETECT;
   int mode = 0;
   initgraph(&driver, &mode, "");
   setfillstyle(1, 9);
   floodfill(x, y, 0);
 
   while ((x + 20 < 400) && !anykeypressed())
   {
      _(x, y, 14);
      delay(20);
      _(x, y, 9);
      x++;
   }
 
   closegraph();
 
   return 0;
}

Объяснение кода листинга программы

  1. Включаем заголовочный файл
  2. Определяем функцию с именем _ с тремя параметрами типа int: x, y, color.
  3. Внутри функции устанавливаем тип заполнения фигуры (в данном случае — 1) и цвет (color).
  4. Затем вызываем функцию bar(x, y, x + 20, y + 20), которая рисует прямоугольник.
  5. В функции main() инициализируем переменные x и y со значениями 0 и 300 соответственно.
  6. Определяем переменные driver и mode, которые используются для инициализации графического драйвера и режима графики.
  7. Инициализируем графический драйвер и режим графики с помощью функции initgraph(&driver, &mode, ``).
  8. Устанавливаем тип заполнения фигуры (в данном случае — 1) и цвет (9) с помощью функции setfillstyle(1, 9).
  9. Используем функцию floodfill(x, y, 0), чтобы заполнить прямоугольник с координатами (x, y) цветом 0.
  10. Затем в цикле while рисуем два прямоугольника (с координатами (x, y)) с помощью функции (x, y, 14) и (x, y, 9), ждем 20 миллисекунд и переходим к следующему циклу.
  11. Увеличиваем значение x на 1.
  12. Если нажата клавиша (anykeypressed()), то цикл прерывается.
  13. Закрываем графику с помощью функции closegraph().
  14. Возвращаем 0, чтобы указать, что программа успешно завершилась.
  15. Значение переменной x изменяется от 0 до 399, поскольку в цикле while выполняется 200 итераций.
  16. Значение переменной y остается постоянным (300).
  17. Цвет фигур меняется с 9 на 14, а затем обратно на 9.
  18. Не указано, что произойдет, если значение переменной x достигнет 400.
  19. Не указано, что произойдет, если пользователь нажмет клавишу.
  20. Не указано, как программа завершится, если возникнет ошибка во время выполнения.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы