我在fmod教程中几乎逐字地复制了以下代码块,只需对变量名进行一些修改,以免与任何内容发生冲突。我的代码在没有任何fmod语句的情况下编译得很好。当我放入FMOD_RESULT fm_result
行以及随后的所有内容时,我得到一个错误,指出error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
我有VS2010,没有链接器或包含文件错误而没有fmod代码。错误与行fm_result = FMOD::System_Create(&fm_system);
有关我也在同一行上收到错误error C2371: 'fm_result' : redefinition; different basic types
。
FMOD_RESULT fm_result;
FMOD::System *fm_system;
fm_result = FMOD::System_Create(&fm_system); // Create the main system object.
if(fm_result != FMOD_OK){
printf("FMOD error! (%d) %s\n", fm_result, FMOD_ErrorString(fm_result));
exit(-1);
}
fm_result = fm_system->init(100, FMOD_INIT_NORMAL, 0); // Initialize FMOD.
if(fm_result != FMOD_OK){
printf("FMOD error! (%d) %s\n", fm_result, FMOD_ErrorString(fm_result));
exit(-1);
}
答案 0 :(得分:1)
我不知道,它一定是关于Visual Studio的东西,或者其他你没有告诉我们的东西......下面的代码在GCC 4.6中编译好:
#include <fmod.hpp>
#include <fmod_errors.h>
#include <cstdio>
#include <cstdlib>
int main()
{
FMOD_RESULT fm_result;
FMOD::System *fm_system;
fm_result = FMOD::System_Create(&fm_system); // Create the main system object.
if(fm_result != FMOD_OK)
{
printf("FMOD error! (%d) %s\n", fm_result, FMOD_ErrorString(fm_result));
exit(-1);
}
fm_result = fm_system->init(100, FMOD_INIT_NORMAL, 0); // Initialize FMOD.
if(fm_result != FMOD_OK)
{
printf("FMOD error! (%d) %s\n", fm_result, FMOD_ErrorString(fm_result));
exit(-1);
}
}
我将fmodapi43405linux.tar.gz
解压缩到/tmp/
并调用了这样的编译器:
g++ -W -Wall -Wextra -s -O3 -march=native -o prog prog.cpp \
-I /tmp/fmodapi43405linux/api/inc/ \
/tmp/fmodapi43405linux/api/lib/libfmodex.so
如果我追加-std=c++0x
,它也有效。
答案 1 :(得分:0)
关于错误: 错误C4430:缺少类型说明符 - 假定为int。注意:C ++不支持default-int
如果你在第一次加入FMOD之前放入FMOD_RESULT,你会得到这个。你能确定不是这样吗?也许你有一个包含链,在包含fmod.h之前使用FMOD_RESULT。