FMOD结果未被识别为有效类型?

时间:2011-07-04 01:42:54

标签: c++ visual-studio-2010 compiler-errors fmod

我在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);
}

2 个答案:

答案 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。