Эта функция повторная?

Это не работает, потому что вы используете имя page как для ForeignKey для страницы, на которую вы ссылаетесь (в RelatedLinks), так и ParentalKey, указывающей на содержащую страницу (в SUAWebPageRelatedLinks). Вам нужно будет переименовать один из них.

0
задан Andy Lin 19 January 2019 в 03:30
поделиться

2 ответа

Да.

Из отрывка тега из :

Подпрограмма считается повторно входящей, если ее можно безопасно вызвать до завершения предыдущего вызова.

В вашем случае, поскольку функция возвращает адрес только глобальной (статической) переменной, которая должна оставаться постоянной после запуска программы, функция хорошо возвращается.

IMO, реентерабельная функция может получать доступ к глобальным и статическим данным, без изменения , поэтому получение адреса глобальной переменной неплохо для реентерабельной функции.

0
ответ дан iBug 19 January 2019 в 03:30
поделиться

При рассмотрении того, является ли функция реентерабельной или нет, пример должен быть немного менее тривиальным, чем этот.

pDNM DNMManager_New(void)    //reentrant?
{
    return &DNMTemp;
}

Но ссылка на DNMTemp (его адрес) останется неизменной во время выполнения программы, поэтому эта функция реентерабельна.

Но если вы получите доступ к реальным данным, это не так.

uint32_t DNMManager_read(void)    //reentrant?
{
    return SerialNum;
}
0
ответ дан P__J__ 19 January 2019 в 03:30
поделиться
Другие вопросы по тегам:

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