Почему 1 байт возвращается от обратного P/вызовов неправильно оценивается на ARM64 IOS?IOS

Программируем под IOS
Anonymous
Почему 1 байт возвращается от обратного P/вызовов неправильно оценивается на ARM64 IOS?

Сообщение Anonymous »

Использование .NET 9, нацеливаясь на iOS, у меня есть что -то вроде этого: < /p>

Код: Выделить всё

[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.U1)]
public delegate bool MyCallback();

// ...

private static MyCallback _MyCallback = __MyCallback;

// ...

[ObjCRuntime.MonoPInvokeCallback(typeof(MyCallback))]
private static bool __MyCallback()
{
return false;
}
< /code>
На собственной стороне: < /p>
typedef signed char BOOL;
typedef BOOL (*fnMyCallback)();

//

printf("sizeof(BOOL)=%zu\n", sizeof(BOOL));

if (!context->myCallback()
{
printf("direct check is FALSE\n");
}
else
{
printf(TAG, "direct check is TRUE\n");
}

< /code>
Вывод < /p>

sizeof (bool) = 1
Прямая проверка - это истина < /p>
< /blockquote>
Итак, мы подтверждаем, что значение, с которым мы имеем дело, является 1 байт на обоих управляемых, так и некоммерческих SIDES. Почему это неправильно оценивается как истина 
?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ted-on-ios

Вернуться в «IOS»