使用winbgim库重新定义int右错误

Redefinition of int right error using winbgim library

本文关键字:定义 int 错误 winbgim 新定义 使用      更新时间:2023-10-16

我在制作一个使用winbgim.h头文件的程序时遇到了问题。这是一个简单的程序,只生成一个简单圆。我目前正在学习winbgim和graphics.h库。我下载了它,下载了库,并将其包含在代码块中,然后它就可以正常工作了。

但当我尝试使用它时,另一个代码弹出,在第302行显示"错误:重新定义"int right"

有人能帮忙吗?这是我的代码:

#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;
}

我不知道它是否适合这个论坛,但我只是想告诉(世界)一些事情。我最近决定试用WinBGIm库,所以我下载了这个包,在设置了所有编译器和链接器设置后,运行了我的简单"Hello World"代码。但是我从我的编译器(MinGW,CodeBlocksIDE)得到了以下消息。

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
    );

所以我所做的是,我只是把其中一个"right"(后来的前一个)变量改为"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目录,右键单击<iostream>并选择类似于打开文件的东西,它将在一个新代码块"选项卡"中打开标题,右键点击选项卡并单击打开包含文件夹。就是这样。