0

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

2 回答 2

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

于 2011-07-04T02:08:48.253 回答
0

关于错误:错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

如果您将 FMOD_RESULT blah 放在第一次包含 FMOD 之前,您会得到这个。你能确定不是这样吗?也许您有一个包含链,它在包含 fmod.h 之前使用了 FMOD_RESULT。

于 2011-07-05T00:46:44.607 回答