На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (3) 1 [2] 3  все  ( Перейти к последнему сообщению )  
> Простой вопрос про static , найти ответ не могу в книгах
    Цитата Sazabis @
    по умолчанию функции итак имеют не статик спецификатор, а именно extern
    Не могут они иметь extern, поскольку extern используется только в объявлениях (declaration), а фунция (не прототип, а именно функция) - это определение (definition).
      Цитата -Daemon- @
      Не могут они иметь extern, поскольку extern используется только в объявлениях (declaration), а фунция (не прототип, а именно функция) - это определение (definition).

      и ? что, функция не может быть external linkage ?
        Sazabis объявление, но не определение ;)

        Добавлено
        Возможно я не правильно понял твою реплику.
          Цитата Adil @
          Цитата Hryak @
          Написать nostatic int g;, что ли?
          Так нельзя! Это безграмотно! Надо писать nonstatic.

          :whistle:

          -Added
          Цитата Sazabis @
          Цитата Hryak @
          А как её сделать нестатической тогда? Написать nostatic int g;, что ли?

          по умолчанию функции итак имеют не статик спецификатор, а именно extern

          Зачем слова из контекста вырываешь? Перечитай сквотированное мной перед этими словами.
            Цитата Hryak @
            Зачем слова из контекста вырываешь? Перечитай сквотированное мной перед этими словами.

            значит не понял, и опять перечитал не понял )) Вопрос какой нибуть был вообще ?
            Цитата Hryak @
            Написать nostatic int g;, что ли?

            написать extern int g; extern это проивоположность static.
              Цитата Sazabis @
              Цитата Hryak @
              Зачем слова из контекста вырываешь? Перечитай сквотированное мной перед этими словами.

              значит не понял, и опять перечитал не понял )) Вопрос какой нибуть был вообще ?

              Повторяю содержание первой части поста #7:
              <<<<<<<<<<
              Цитата polyglott @
              Если объявляешь переменную вне функции без квалификаторов, то переменная поумолчанию делается статической.

              Без каких квалификаторов? :wacko:
              А как её сделать нестатической тогда? Написать nostatic int g;, что ли? :lol:
              >>>>>>>>>>

              Во-первых, речь шла про переменные, а не функции.
              Во-вторых, extern вообще не при делах, т.к. определение не может содержать extern, про что тут уже говорили.
              В-третьих, я знаю, что функции по умолчанию имеют внешнюю линковку :tong: .
                Цитата Hryak @
                определение не может содержать extern, про что тут уже говорили.

                :blink:
                  Цитата LPBOY @
                  Цитата Hryak @
                  определение не может содержать extern, про что тут уже говорили.

                  :blink:

                  Цитата
                  A declaration is a definition unless it declares a function without specifying the function's body (dcl.fct.def), it contains the extern specifier (dcl.stc) or a linkage-specification*
                    :no: :no: :no:
                    Цитатка не до конца. :rolleyes:
                    Цитата

                    A declaration is a definition unless it declares a function without specifying the function’s body (8.4), it
                    contains the extern specifier (7.1.1) or a linkage-specification (7.5) and neither an initializer nor a
                    function-body,


                    ExpandedWrap disabled
                      extern int x = 1; // определение, компилится нормально
                      extern int fn() // определение, компилится нормально
                      {
                          return 1;
                      }
                      Уболтали. :yes:
                        Цитата LPBOY @
                        extern int fn() // определение, компилится нормально
                        :blink: Век живи, век учись...
                          Цитата Hryak @
                          А как её сделать нестатической тогда? Написать nostatic int g;, что ли? :lol:
                          >>>>>>>>>>

                          Подумай! Как глобальная переменная может быть нестатической? Все глобальные переменные - статические.
                          По отношению к глобальным переменным слово static приобретает просто иной смысл, чем по отношению к локальным
                            Цитата gryz @
                            По отношению к глобальным переменным слово static приобретает просто иной смысл, чем по отношению к локальным

                            Спасибо за просвещение, не знал этого. :wub:
                              gryz тогда встречный вопрос по поводу линковки. Почему если в хедер файле объявить переменную и инклудить ее в две разные единицы трансляции - возникает ошибка линковщика. Если же прописать спецификатор static, т.е. явно указать способ линковки, - то ествественно ошибка исчезает.
                                Цитата -Daemon- @
                                gryz тогда встречный вопрос по поводу линковки. Почему если в хедер файле объявить переменную и инклудить ее в две разные единицы трансляции - возникает ошибка линковщика. Если же прописать спецификатор static, т.е. явно указать способ линковки, - то ествественно ошибка исчезает.

                                Этот static никаким образом не относится к статику для локальных переменных и членов классов.
                                static для глобальных переменных как раз и делает их уникальными для каждой единицы трансляции.
                                Фактически в этом случае компилятор создает несколько независимых глобальных переменных по одной для каждой единицы трансляции
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) 1 [2] 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1118 ]   [ 16 queries used ]   [ Generated: 17.06.26, 21:38 GMT ]