Результат FMOD не распознается как допустимый тип? - PullRequest
0 голосов
/ 04 июля 2011

У меня следующий фрагмент кода, почти дословно скопированный из учебников по 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 ]

1 голос
/ 04 июля 2011

Не знаю, это должно быть что-то про 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.

0 голосов
/ 05 июля 2011

Относительно ошибки: ошибка C4430: отсутствует указатель типа - предполагается int.Примечание: C ++ не поддерживает default-int

. Вы получите это, если добавите FMOD_RESULT бла перед первым включением FMOD.Можете ли вы убедиться, что это не так?Возможно, у вас есть цепочка включений, которая использует FMOD_RESULT перед включением fmod.h.

...