Angelscript - ожидается "," или ")"

Таким образом, может показаться, что Angelscript довольно несовместим с теми функциями, которые он мне позволяет выполнять. Я пытаюсь объявить глобальную функцию таким образом:

scrpEngine->RegisterGlobalFunction("float sin(float in)", asFUNCTION(sinCallback), asCALL_CDECL);

Моя функция обратного вызова sin (которая вызывает функцию sin, не беспокоясь о ее перегрузке) выглядит примерно так:

float sinCallback(float in) {
    return sin(in);
}

Всякий раз, когда я компилирую скрипт, я получаю ошибки, а именно:

ERROR: System function (1:17) : Expected ')' or ','
ERROR:  (0:0) : Failed in call to function 'RegisterGlobalFunction' with 'float sin(float in)' (Code: -10)

При проверке документации и заголовочных файлов этот код ошибки относится к неверному синтаксису. Однако синтаксис объявления функции определенно ДОЛЖЕН быть действительным. У кого-нибудь есть идеи?

1 ответ

Решение

Я думаю, что проблема заключается в подписи, с которой вы регистрируете свою функцию: float sin(float in),
Я предполагаю, что "in" должно быть именем параметра в соответствии с вашей функцией C++, но AngelScript имеет in/out/inout спецификаторы для ссылок, т.е. float sin(float &in),

Это может быть ошибкой или документально подтверждено, что вы не можете использовать эти ключевые слова в качестве имен параметров функции.

Если вы просто измените имя параметра в подписи (никаких изменений в вашей функции обратного вызова не требуется) (например, float sin(float f)) или бросьте его целиком (float sin(float), поскольку это не требуется в подписи вообще), ваша функция должна зарегистрироваться нормально.

Другие вопросы по тегам