仅当我在C文件(非CPP)中工作时才会出现此错误
我在处理一些opengl示例时遇到了一个非常奇怪的错误,我把它缩小到下面的代码,这会产生我得到的相同错误,找不到类型
#include "stdlib.h"
void Initialize(int, char*[]);
void main()
{
}
void Initialize(int argc, char* argv[])
{
int i;
for(i = 10; i>0;i--)
{
int j=0;
j = j+2;
int GlewInitResult2;
}
}
我使用了visual studio 2008,OS:windows xp
无法理解为什么会这样?这是一个编译器错误吗?
(顺便说一句,如果我将文件保存为.CPP文件,它编译得很好)
答案 0 :(得分:4)
您在声明后有声明。在较新版本的C(如C99)中,你可以拥有它,但在旧版本中你不能。微软的C编译器很老了。在C ++中它没关系,这就是它构建的原因。
答案 1 :(得分:2)
Microsoft编译器仅支持C89,因此声明和代码不能混用。这在C ++中是允许的。当源文件具有.c
扩展名时,它被视为C源,当它具有.cpp
时,它被视为C ++。
要更正C,请将所有变量声明放在要使用它们的范围的开头。
答案 2 :(得分:2)
据我所知,Visual Studio 2008并不完全符合c99标准。
在c99
之前的标准中,您必须在程序开头声明变量。但是在c99
中,变量的声明可以在函数的任何地方完成。
同样在c ++中没有这样的限制。在Windows中,当您创建扩展名为.cpp
的文件时,它将被视为c ++文件。因此,当编译为cpp时,相同的程序可以工作。
解决方案: