Переопределение 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> и выберите что-то вроде открытого файла, который откроет заголовок в новой "вкладке" кодовых блоков, щелкните правой кнопкой мыши по вкладке и нажмите "Открыть", содержащую папку. Это оно.

Другие вопросы по тегам