Отключите выделяющий текст усилитель на касании - держатся Мобильный Safari / WebKit

Обратите внимание, что когда вы говорите:

bool (*a)();

вы объявляете a типа «указатель на функцию, возвращающую bool и принимающую неопределенное количество параметров». Предполагая, что bool определено (возможно, вы используете C99 и включили stdbool.h, или это может быть typedef), это может или не может быть тем, что вы хотите.

Проблема здесь в том, что у компилятора нет способа проверить, присвоено ли a правильное значение. Та же проблема существует с вашими объявлениями функций. A(), B() и C() все объявлены как функции, «возвращающие bool и принимающие неопределенное количество параметров».

Чтобы увидеть, какие проблемы могут возникнуть, давайте напишем программу:

#include <stdio.h>

int test_zero(void)
{
    return 42;
}

static int test_one(char *data)
{
    return printf("%s\n", data);
}

int main(void)
{
    /* a is of type "pointer to function returning int
       and taking unspecified number of parameters */
    int (*a)();

    /* b is of type "pointer to function returning int
       and taking no parameters */
    int (*b)(void);

    /* This is OK */
    a = test_zero;
    printf("a: %d\n", a());

    a = test_one; /* OK, since compiler doesn't check the parameters */
    printf("a: %d\n", a()); /* oops, wrong number of args */

    /* This is OK too */
    b = test_zero;
    printf("b: %d\n", b());

    /* The compiler now does type checking, and sees that the
       assignment is wrong, so it can warn us */
    b = test_one;
    printf("b: %d\n", b()); /* Wrong again */

    return 0;
}

Когда я компилирую вышеизложенное с помощью gcc, он говорит:

предупреждение: назначение из несовместимого типа указателя

для строки b = test_one;, что хорошо. Нет предупреждения для соответствующего присвоения a.

Итак, вы должны объявить свои функции как:

bool A(void);
bool B(void);
bool C(void);

И тогда переменная для хранения функции должна быть объявлена ​​как:

bool (*choice)(void);
47
задан 3n. 28 May 2009 в 23:53
поделиться

2 ответа

Только что получил ответ от службы поддержки Центра разработчиков. Мне нужно было добавить это правило CSS:

-webkit-user-select: none;
49
ответ дан 26 November 2019 в 19:48
поделиться

Это также полезно для защиты контента, который вы не хотите копировать или сохранять, например изображения:

#yourdiv img {-webkit-touch-callout: none; }
5
ответ дан 26 November 2019 в 19:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: