Непонятное сообщение об ошибке от компилятора - C (СИ)
Формулировка задачи:
Здравствуйте, Друзья!
При исполнении следующего кода на СИ:
компилятор Dev-C++ выдает странную ошибку:
In function `Z1_iii'.
Причем, если я процедуру назову именем из 2х символов(например - Dr), то компилятор выдаст такую ошибку:
In function `Z2Driii'.
А если из 10 символов(например - gfdfsgdsfg), то такую:
In function `Z10gfdfsgdsfgiii'.
Подскажите пожалуйста, зачем это он благим матом разговаривает и как его успокоить?
#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();
}Решение задачи: «Непонятное сообщение об ошибке от компилятора»
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;
}
Объяснение кода листинга программы
- Включаем заголовочный файл
- Определяем функцию с именем _ с тремя параметрами типа int: x, y, color.
- Внутри функции устанавливаем тип заполнения фигуры (в данном случае — 1) и цвет (color).
- Затем вызываем функцию bar(x, y, x + 20, y + 20), которая рисует прямоугольник.
- В функции main() инициализируем переменные x и y со значениями 0 и 300 соответственно.
- Определяем переменные driver и mode, которые используются для инициализации графического драйвера и режима графики.
- Инициализируем графический драйвер и режим графики с помощью функции initgraph(&driver, &mode, ``).
- Устанавливаем тип заполнения фигуры (в данном случае — 1) и цвет (9) с помощью функции setfillstyle(1, 9).
- Используем функцию floodfill(x, y, 0), чтобы заполнить прямоугольник с координатами (x, y) цветом 0.
- Затем в цикле while рисуем два прямоугольника (с координатами (x, y)) с помощью функции (x, y, 14) и (x, y, 9), ждем 20 миллисекунд и переходим к следующему циклу.
- Увеличиваем значение x на 1.
- Если нажата клавиша (anykeypressed()), то цикл прерывается.
- Закрываем графику с помощью функции closegraph().
- Возвращаем 0, чтобы указать, что программа успешно завершилась.
- Значение переменной x изменяется от 0 до 399, поскольку в цикле while выполняется 200 итераций.
- Значение переменной y остается постоянным (300).
- Цвет фигур меняется с 9 на 14, а затем обратно на 9.
- Не указано, что произойдет, если значение переменной x достигнет 400.
- Не указано, что произойдет, если пользователь нажмет клавишу.
- Не указано, как программа завершится, если возникнет ошибка во время выполнения.