C++:库SDL_image.h中出现“expected initializer before extern”奇怪错误

12

我目前正在尝试使用SDL和Box2D制作一个简单的游戏。不幸的是,我添加的代码用于使角色发射投影仪非常有错误,我甚至无法开始计算其中的错误。为了解决这个问题,我添加了一些代码来在游戏中显示一些调试信息。不幸的是,在处理所有错误后,出现了一个以前没有出现过的奇怪错误:

/usr/include/SDL/SDL_image.h|34|error: expected initializer before ‘extern’|
||=== Build finished: 1 errors, 0 warnings ===|

导致这个问题的是 SDL_image.h 中的代码:

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif

我不知道是什么原因导致这个错误信息出现,也不知道该如何解决。我的代码没有任何错误信息。我认为库里面没有问题,因为我之前编写的游戏都可以编译通过。这是唯一出现的错误。


1
错误信息显示“before extern”——ifdef不是前面的内容,因此您需要向我们展示该行代码之前的内容。 - Soren
1个回答

53

请查看包含在此文件之前的头文件结尾。我猜测是类定义后缺少了一个分号;


2
+1,但我猜这是一个全局变量声明,而不是类声明。使用g++ 4.3.4编译器,代码int x extern int y;会产生相同的错误,而class X{} extern int y;则会产生不同的错误。 - Adam Rosenfield
3
好的,原文是:Yup, there was a missing semi-colon after a function. Thanks!翻译为中文是:“是的,在一个函数后面漏了一个分号。谢谢!” - Magnus
3
哇塞,太感谢你了!我花了一个多小时找我的错误,最后你帮我解决了问题。我的头文件最后一个函数少了一个分号。非常感谢你! - George
那里,缺少了分号!! - hounded

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接