Почему 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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