使用winbgim库重新定义int右错误
Redefinition of int right error using winbgim library
我在制作一个使用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>
并选择类似于打开文件的东西,它将在一个新代码块"选项卡"中打开标题,右键点击选项卡并单击打开包含文件夹。就是这样。
- 为什么"weak.lock()"返回"nullptr" "auto weak=std::make_shared<int>(42);"的定义?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 当我尝试定义这个向量时<pair<int , pair<int, int> > > vp(n)
- 定义 uint= "unsigned int" 没有像我在 Visual Studio 中使用 nvcc 时预期的那样应用
- C++ std::vector<int> 体系结构的未定义符号 x86_64:
- 我可以使用常量定义数组的长度,那么为什么 int d[b] 不起作用呢?
- 如何定义int[][26]类型的变量
- 从 int 显式转换为用户定义的类 c++
- 对'cv::VideoCapture::VideoCapture(int)的未定义引用
- 是否打印指向已定义 int 的成员指针
- 编译Qt项目给出了对运算符delete(void*,unsigned int)的未定义引用
- 从emxArray_uint8_T检测到错误:.text+0xc1):未定义对"emxInit_uint8_T1(emxArray_uint8_T**, int)"的引用?
- 对 'i2c_smbus_read_word_data(int, 无符号字符)的未定义引用
- 定义.cpp中常数int/char*
- 处理代码重新定义int类型(uint16_t,int16_t等),并不喜欢它
- 有没有办法通过'greater/lesser than'而不是"="来定义'int'?
- 将定义 int 传递给函数作为参数
- types.h中的内容——编译器在哪里定义int、带符号int和其他值的宽度
- 错误 LNK2005:已在 functions.obj 中定义"int __cdecl number(void)" (?number@@YAHXZ)
- 使用winbgim库重新定义int右错误