Руководство Google по стилю в C. Часть 3. Локальные и глобальные переменные.

#include using namespace std ; void fn ( int num ) ; void fn ( int num )int main ( )

Руководство Google по стилю в C++. Часть 3

Часть 1. введение Часть 2. заголовочные файлы Часть 3. область применения Часть 4. классы …

Эта статья представляет собой русский перевод часового учебника Google Stylebook на C++. Исходная статья (форк на github), обновленный перевод.

Область видимости

Поместите свой код в пространство имен (за некоторыми исключениями). Пространство имен должно иметь уникальное имя, состоящее из имени проекта и, возможно, пути. Не используйте директиву using (например, using namespace foo). Не используйте встроенное пространство имен. Об анонимных пространствах имен см. в разделе Анонимные пространства имен и статические переменные.

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

Пространства имен позволяют избежать конфликтов пространств имен в больших программах, а сами пространства имен остаются относительно короткими. Например, если два разных проекта содержат класс Foo в глобальной области видимости, пространства имен могут конфликтовать. Если каждый проект помещает код в свое собственное пространство имен, то project1::Foo и project2::Foo имеют разные имена, поэтому конфликта нет, и в то же время код каждого проекта использует Foo без префикса. Инлайн-пространства имен автоматически делают свои имена видимыми в пространстве имен, в которое они входят. Давайте посмотрим на пример кода:

Внешнее пространство имен// namespace inner>// Внешнее пространство имен

Здесь чередуются outer::inner::foo() и outer::foo(). Инлайн-пространства имен в основном используются для совместимости ABI между различными версиями.

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

  • Следуйте правилам Именования Пространств Имён.
  • В конце объявления пространства имён добавляйте комментарий, аналогично показанным в примерах.
  • Заключайте в пространство имён целиком файл с исходным кодом после #include-ов, объявлений/определений gflag-ов и предварительных объявлений классов из других пространств имён.
// в пространстве имен .h файла mynamespace;>// пространство имен mynamespace
// в файле .cc Пространство имен mynamespace>// пространство имен mynamespace

Дополнительные объявления, такие как флаги или утверждения, могут быть включены в файлы .cc.

#include "a.h" ABSL_FLAG(bool, someflag, false, "фиктивный флаг"); namespace mynamespace// пространство имен mynamespace
// Неприемлемо - загрязняет пространство имен,
// Сокращенная запись для доступа к часто используемым именам в файлах .cc. namespace baz = ::foo::bar::baz,
// Сокращение для часто используемых имен (в файле .h). Библиотека пространства именБезымянные пространства имён и статические переменные

Если определения в файле .cc не используются в других файлах исходного кода, поместите эти определения в анонимное пространство имен или объявите их статическими. Не используйте этот тип определения в заголовочных (.h) файлах.

Определение Размещенные декларации в анонимном пространстве имен могут быть связаны как внутренние (только для внутреннего использования). Функции и переменные также могут быть связаны внутренне, если они объявлены как статические. Эти типы деклараций указывают на то, что они недоступны из другого файла. Если в другом файле объявлена сущность с тем же именем, оба объявления полностью независимы друг от друга.

Заключение Использование внутренней ссылки на файлы .cc предпочтительно для любого кода, который недоступен извне (другие файлы). Не используйте методы внутренней перелинковки для файлов .h. Формат описания анонимного пространства имен точно такой же, как и у именованного варианта. Не забудьте написать комментарий в закрытых скобках и оставить имя пустым:

Пространство имен<.>// пространство имен

Область видимости переменных в C++

Области переменных - это части программы, в которых пользователь может изменять или использовать переменные в соответствии со своими потребностями.

В C++ существуют отдельные блоки, которые начинаются с вводной круглой скобки (<) и заканчиваются соответственно закрывающей скобкой (>Эти блоки представляют собой циклы (for, while, do while) и функции.

//Блок (loop - for), также является подчиненным блоком главной функции.
//Блок (loop - for), но он является подчиненным блоком для первого цикла.

Когда переменная создается в таком блоке, ее область действия распространяется на этот блок с самого начала (с открывающей скобки -<) и до его конца (до закрывающей скобки —>), включая все дочерние блоки, созданные в этом блоке.

В следующем примере программист допустил ошибку в области видимости:

  • Он создал переменную j во втором цикле.
  • Использовав ее в первом цикле for он вынудил компилятор сообщить об ошибке (переменной j больше нет, поскольку второй цикл закончил свою работу).

cout<Однако в строке 6 ошибки не возникает, потому что второй цикл находится в первом цикле (он является подчиненным блоком первого цикла), и поэтому переменная b может быть использована там без каких-либо проблем.

Глобальные переменные в C++

Глобальные переменные - это переменные, которые создаются вне тела блока. Их можно использовать на протяжении всей программы до ее окончания. В следующем примере мы создали две глобальные переменные global и global_too и использовали их в функции summa:

Именно такой результат дает данная программа:

Как вы можете видеть, глобальные переменные видны везде. В нашем примере мы не создавали никаких переменных внутри функции summa, а использовали только две глобальные переменные, которые мы создали ранее.

Локальные переменные

Локальные переменные - это переменные, которые создаются в блоках. Эти переменные видны только блокам (и всем их дочерним элементам), а также не видны другим блокам. В любом случае, эти переменные создаются в отдельных блоках.

Из этого можно сделать вывод, что мы можем создавать переменные с одинаковым именем, но в разных блоках (или, другими словами, так, чтобы их видимость не перекрывалась).

int b = i ; // локальная переменная (находится в блоке for).

В приведенном выше примере блок, в котором была создана локальная переменная b, является циклом for (2 - 5). Если бы мы захотели вывести переменную b вне блока for, компилятор выдал бы ошибку, как описано ниже.

Распространенная ошибка начинающих программистов - использование локальных переменных в других блоках. Например, мы решили использовать переменную cost в следующей функции sum, хотя мы создали ее в другой функции, main.

Запомните одну вещь! Если вы создали локальную переменную, вы должны знать, что она не может быть использована в других блоках.

Администрирование систем управления базами данных инфокоммуникационных систем

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

В настоящее время 54 334 учебных заведения имеют право на накопительную скидку (от 2% до 25%). Чтобы узнать, какая скидка распространяется на всех сотрудников вашего учреждения, войдите в личный кабинет Инфорурок.

Курсы повышения квалификации

Актуальные вопросы теории и практики современного образования

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

В настоящее время 54 334 учебных заведения имеют право на накопительную скидку (от 2% до 25%). Чтобы узнать, какая скидка распространяется на всех сотрудников вашего учреждения, войдите в личный кабинет Инфорурок.

«Основы работы с программой PowerPoint»

C++ - это язык программирования общего назначения, разработанный для того, чтобы сделать работу серьезных программистов более приятной. За исключением незначительных деталей, C++ является надмножеством C. В дополнение к возможностям, предоставляемым C, C++ обеспечивает гибкие и эффективные средства определения новых типов.

Язык программирования служит двум взаимосвязанным целям: он предоставляет программисту инструмент для описания действий, которые должны быть выполнены, и набор понятий, с которыми программист может работать, размышляя о том, что может быть сделано. Для достижения первой цели в идеале необходим язык, приближенный к компьютеру, чтобы всеми важными элементами компьютера можно было легко и эффективно управлять достаточно очевидным для программиста способом. Язык C был разработан именно на основе этой идеи. Вторая цель в идеале требует языка, близкого к решаемой проблеме, чтобы концепции решения могли быть выражены ясно и непосредственно. Эта идея привела к обогащению языка C функциями, которые превратили его в язык C++.

Действие до 30 ноября

  • Опытные онлайн-репетиторы
  • Подготовка к ЕГЭ и ОГЭ
  • По всем школьным предметам 1-11 класс

Итоги.

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

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

Переменная, объявленная в функции, является локальной переменной. Доступ к локальной переменной возможен только внутри функции.

Если вы объявите глобальную и локальную переменные с одинаковым именем, локальная переменная не заменит глобальную.

Читайте также Обработка пользовательских ошибок, расширение Error

Задания

var a =9; function show()console.log(a),
a=5; function show()console.log(a),

И наконец, как всегда, видео о локальных и глобальных переменных в JavaScript.

Если вы обнаружили ошибку, выделите текст и нажмите Ctrl+Enter .

Оцените статью
Uhistory.ru
Добавить комментарий