Код: Выделить всё
[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