bc ++和过剩错误

时间:2010-06-27 11:24:19

标签: c++ opengl c++builder

这段代码在Vc ++编译得很好,但是在borland c ++中给我这个错误..代码没有语法错误,工作正常..好像标题有问题..但这些是标准的头文件和库文件

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
main.c:
Error E2337 c:\Borland\Bcc55\include\glut\glut.h 146: Only one of a set of verloadedfunctions can be "C"

1 个答案:

答案 0 :(得分:4)

错误是由于重载函数被视为C语言函数。因为语言“C”没有重载,所以它只能有一个给定名称的函数。显然,GLUT的函数与程序中的其他函数同名。这可能是你自己的函数(只需检查glut.h行(146左右),看看你是否复制了一个名字。你的main.c是一个“C”程序,所以这将强制进行C语言编译(除非你用命令行开关强制进行C ++编译。你可以尝试将代码重命名为“main.cpp”并重新编译。

另一种可能性是DEFINES没有设置为正确包含GLUT,而GLUT本身正试图定义具有相同名称的重载函数。这可能不太可能,因为我认为GLUT在“C”中是可编译的。

这是一段代码,它会强制显示错误,以便您了解错误发生的原因。只需在第二个“somefunc”子程序上切换注释即可。将此代码保存为C ++(即myfile.cpp)。

//
// Program myfile.cpp
//

#include <stdio.h>

extern "C" float somefunc(int a) { return(a); };

// Un-comment one of the following two lines.
extern "C" float somefunc(float a) { return(a); };  // This line should produce the error.
// float somefunc(float a) { return(a); };          // This line should compile.


void main(void){
    printf("Hello World!\n");
}
祝你好运,

/艾伦