Переопределение int правильной ошибки с использованием библиотеки winbgim
У меня проблема с созданием программы, которая использует заголовочный файл winbgim.h. Это простая программа, которая делает только один простой круг. В настоящее время я изучаю библиотеки winbgim и graphics.h. Я скачал его, я скачал библиотеку и включил ее в Codeblocks после этого, и она работает правильно.
Но когда я пытаюсь его использовать, появляется другой код, и на 302-й строке он показывает "ошибка: переопределение"int right". Я делаю это в файле консоли в IDE Codeblocks.
Кто-нибудь может помочь? Вот мой код:
#include <iostream>
#include <winbgim.h>
#include <cstdlib>
using namespace std;
int main()
{
int gdriver = 9;
int gmode = 2;
initgraph(&gdriver,&gmode, "");
setbkcolor(WHITE);
setcolor(BLACK);
cleardevice();
circle(320,240,180);
getch();
closegraph();
return 0;
}
2 ответа
Я не знаю, подходит ли он этому форуму или нет, но я просто хотел сказать (мир) что-то. Недавно я решил попробовать библиотеку WinBGIm, поэтому я скачал пакет и после настройки всех параметров компилятора и компоновщика запустил мой простой код "Hello World". Но я получил следующее сообщение от моего компилятора (MinGW, CodeBlocks IDE).
d: \ codeblocks \ mingw \ bin.. \ lib \ gcc \ mingw32 \ 4.4.1........ \ include \ graphics.h | 302 | ошибка: переопределение 'int right' |
d: \ codeblocks \ mingw \ bin.. \ lib \ gcc \ mingw32 \ 4.4.1........ \ include \ graphics.h | 302 | ошибка: 'int right', ранее объявленное здесь |
|| === Сборка завершена: 2 ошибки, 0 предупреждений ===|
После того, как я погуглил проблему, я ничего не обнаружил (если не считать предложение использовать CodeBlocks-EP в качестве решения). Когда я просматривал заголовочные файлы, я обнаружил проблему (да!!!) Проблема была с функцией printimage. Первоначальная декларация была
// Исходное объявление. Обратите внимание, что есть две "правильные" переменные
void printimage(
const char* title=NULL,
double width_inches=7, double border_left_inches=0.75, double border_top_inches=0.75,
int left=0, int right=0, int right=INT_MAX, int bottom=INT_MAX,
bool active=true, HWND hwnd=NULL
);
Итак, я просто изменил одну из "правильных" (более поздних) переменных на "top". Вот и все.
//The corrected code
void printimage(
const char* title=NULL,
double width_inches=7, double border_left_inches=0.75, double border_top_inches=0.75,
int left=0, int top=0, int right=INT_MAX, int bottom=INT_MAX,
bool active=true, HWND hwnd=NULL
);
Я сделал то же самое, что предложил @Puneet, просто изменил имя одной из переменных с именем "right".
Я хочу добавить, что вы не можете изменить имя в кодовых блоках (по крайней мере, я не смог этого сделать, изменения были проигнорированы). Поэтому я предлагаю вам сохранить файл кода (ов), закрыть IDE и открыть файл "graphics.h" в текстовом редакторе, изменить имя, сохранить, и все готово.
Вы можете найти свой каталог MinGW, открыв новый проект codeblocks, щелкните правой кнопкой мыши в <iostream>
и выберите что-то вроде открытого файла, который откроет заголовок в новой "вкладке" кодовых блоков, щелкните правой кнопкой мыши по вкладке и нажмите "Открыть", содержащую папку. Это оно.