25 novembro 2022
25 novembro 2022
Terminal
MQL5
//--- primeiro parâmetro handle é ignorado quando o último código de erro é recebido
int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
//--- obter o código para o último erro OpenCL
int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
string desc; // для получения текстового описания ошибки
//--- usamos o código de erro para obter uma descrição textual do erro
if(!CLGetInfoString(code,CL_ERROR_DESCRIPTION,desc))
desc = "cannot get OpenCL error description, " + (string)GetLastError();
Print(desc);
//--- para obter uma descrição do último erro OpenCL sem primeiro obter o código, passamos CL_LAST_ERROR
if(!CLGetInfoString(CL_LAST_ERROR,CL_ERROR_DESCRIPTION, desc))
desc = "cannot get OpenCL error description, " + (string)GetLastError();
Print(desc);
Por enquanto, o nome da enumeração interna é dado como a descrição do erro, cuja decifração pode ser encontrada na página https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Por exemplo, se CL_INVALID_KERNEL_ARGS for recebido, a descrição para
ele será "Returned when enqueuing a kernel when some kernel arguments
have not been set or are invalid."