Re[3]: стиль: объявление статической переменной внутри функц
От: Roman Odaisky Украина  
Дата: 17.09.07 05:52
Оценка: :)
Здравствуйте, Sni4ok, Вы писали:

I>>Приведи пример, пожалуйста, где стоит объявлять статическую переменную?

S>все теже места, где разумно применять синглетоны или глобальные переменные,

Т. е., нигде?

S>а также использование статических констант.
До последнего не верил в пирамиду Лебедева.
Re[2]: стиль: объявление статической переменной внутри функц
От: Roman Odaisky Украина  
Дата: 17.09.07 05:58
Оценка: :)
Здравствуйте, eremeer, Вы писали:

E> Разрешите порассуждать человеку, не обремененному обширным опытом программирования и не претендующуему на непогрешимость и исчерпывающую полноту суждений.


Я бы проще сказал — те же преимущества и недостатки, что и у «одиночек»: трудно расширить, проблемы с инициализацией (в т. ч. thread safety), меньше оверхеда.

E>Недостатки

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

#include <iostream>

int f()
{
    std::cout << "F" << std::endl;
    return 42;
}

int g()
{
    static int const x = f();
    return x;
}

int main()
{
    //g();
}

По меньшей мере 2 компилятора не вызывают здесь f().
До последнего не верил в пирамиду Лебедева.
Re[2]: стиль: объявление статической переменной внутри функц
От: alzt  
Дата: 18.09.07 08:48
Оценка:
Здравствуйте, dandy, Вы писали:

D>ЗЫ Неделю назад этот сайт падал при вставке смайлика внутрь тега ccode. Хотя это и не мое дело.


:-)


Если вы видите этот смайлик — то исправлено.
Re[3]: стиль: объявление статической переменной внутри функц
От: Аноним  
Дата: 18.09.07 15:32
Оценка: +1
RO>По меньшей мере 2 компилятора не вызывают здесь f().
И не должны вроде как
Re: стиль: объявление статической переменной внутри функции
От: nut888 Россия  
Дата: 19.09.07 06:07
Оценка:
На мой взгляд
это может быть оправдано при использовании рекурсии
Re[4]: стиль: объявление статической переменной внутри функц
От: Sni4ok  
Дата: 19.09.07 10:57
Оценка:
Здравствуйте, Erop, Вы писали:

S>>одна из проблем- инициализация локальных статических переменных в зависимости от компилятора может не являться thread safe.


E>А что, есть компиляторы, где является? Это какие? Или это от настроек всё зависит?


насколько мне известно(со слов других, сам не проверял), что на gcc под линукс — thread safe
Re[5]: стиль: объявление статической переменной внутри функц
От: Erop Россия  
Дата: 19.09.07 11:55
Оценка:
Здравствуйте, Sni4ok, Вы писали:

S>насколько мне известно(со слов других, сам не проверял), что на gcc под линукс — thread safe

А как это реализуется, и главное, ЗА ЧТО? Это же накладно однако...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.