Некоторое время я использовал в своей программе graphics.h. Я столкнулся с проблемой на пути, но позже решил ее. Я ввел неправильный путь в функции initigraph(), но программа все еще работала. Как это возможно?
Код1:
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
int main()
{
char a[] = "vyfm";
int gd = DETECT, gm;
initgraph(&gd, &gm, a);
line(100,100, 200, 200);
getch();
closegraph();
return 0;
}
Код 2:
#include <graphics.h>
#include <stdio.h>
#include <conio.h>
int main()
{
char a[] = "C:\\TC\\BGI";
int gd = DETECT, gm;
initgraph(&gd, &gm, a);
line(100,100, 200, 200);
getch();
closegraph();
return 0;
}
Я использую кодовые блоки
Но как это возможно, что функция initgraph не требует никакого каталога?
@KeshavSaraf C:\\TC\\BGI явно Turbo C, ... BGI работает только под MS-DOS, поэтому, если у вас действительно есть CodeBlocks, на какой BGI у вас есть ОС или на какой таргетинг? Это может ответить на ваш вопрос, поскольку разные версии BGI могут по-разному обрабатывать параметры. IIRC WinBGI имеет другой заголовок, поэтому у вас есть что-то еще ... graphics.h бессмысленен, поскольку почти все движки gfx имеют такой файл ... ваш код явно древний BGI
Вы задавали аналогичный вопрос здесь. ПЕЧАЛЬНЫЙ И НЕПРАВИЛЬНЫЙ ФАКТ: даже если ваша программа делает что-то «не так» ... вы НЕ БУДЕТ (обязательно) получаете ошибку компиляции, а МОЖЕТ НЕ даже терпит неудачу во время выполнения (по крайней мере, сначала). Может показаться, что это работает. Это ошибки типа ХУДШИЙ - те, которые ваш клиент находит раньше, чем вы :( Всегда остерегайтесь "неопределенного поведения".





Если вы говорите, что используете кодовые блоки, будьте осторожны при компиляции кода, а затем запустите его. Если вы просто используете команду «запустить» в кодовых блоках, она просто запустит ваш последний exe, даже если текущий файл был изменен. EXE будет изменен, когда вы успешно скомпилируете свой код. В этом случае ваш код должен компилироваться, но я думаю, вы пропустили этот шаг.
Я всегда использую вариант сборки и запуска.
Боже мой!!! Это ДРЕВНИЙ Turbo C API. Язык C++ (не говоря уже о вычислениях в целом) с тех пор сильно изменился ... Что касается вашего вопроса:
initgraph()инициализирует графическую систему и загружает некоторые файлы времени выполнения из каталога BG (Borland Graphics). Я думаю, вашему exe просто не нужен ни один из этих файлов времени выполнения;)