, но я хочу сделать это из командной палитры.
blockquote>
Пытался найти расширение, но не смог его найти.В настоящее время, как показано в vscode-gitlens, выпуск 385 , это делается только через терминал:
- Перейти к представлению управления версиями (Ctrl + Shift + G) и разверните раздел GITLENS на боковой панели
- Найдите ветку для удаления в разделе Remotes (например, геолокация)
- Нажмите правой кнопкой мыши на ветку и выберите Delete Branch (через терминал)
Текст, введенный в терминал, гласит:
blockquote>git push origin :aRemoteBranch
Это остается (Q1 2019) официальным способом удаления удаленной ветви.
В следующем объявлении:
char* string1, string2;
string1
символьный указатель, но string2
отдельный символ только. Поэтому объявление обычно форматируется как:
char *string1, string2;
, который делает это немного более ясным, что эти *
относится string1
, но не string2
. Хорошая практика должна постараться не объявлять несколько переменных в одном объявлении, особенно если некоторые из них являются указателями.
Бьярне Страуструпу есть что сказать по этому поводу :
Критическая путаница возникает (только), когда люди пытаются объявить несколько указателей с помощью одного объявления:
int* p, p1; // probable error: p1 is not an int*
Технически, имеет смысл писать
char *f
, поскольку *f
оператор объявления в этом, в то время как эти char
спецификатор объявления, который указывает основной тип всех операторов объявления. Операторы объявления содержат операторы как ()
, []
и &
, о котором можно думать изменения базового типа и фактического идентификатора.
я использую вышеупомянутую форму помещения *
к идентификатору, потому что это подчеркивает, что *f
на самом деле оператор объявления, в то время как char
основной тип.
В известной степени, можно думать о модификаторах в операторе объявления для создания типа в спецификаторе объявления, когда операторы применяются к идентификатору. Но это не всегда работает:
int a, *b, &c = a, d(), e[1], C::*f;
Примечание, как все из [1 110], *b
, d()
и e[1]
статически твердость к интервалу - кроме [1 114] и C::*
, которые объявляют ссылку (таким образом это должно быть инициализировано), и указатель на участника класса соответственно.
Что никто не упомянул, все же то, что следующий
char *string
может также быть считан как объявление типа выражения *string
(чтение: косвенный оператор относился к указателю string
) как char
. С этой точки зрения нотация совершенно разумна.
Однако я использую
char * string
сам ;)
(станд.:: строка лучше, чем символ* для большей части использования.)
я всегда помещал * с типом, как в символе*, потому что, , поскольку Stroustrup отметил , это подчеркивает тип.
И я никогда не объявляю, что переменные вместе на одной строке избегают общего глюка, обсужденного в ответах здесь;
char* p, q; // oops, probably not what was meant
// this is mandated by our style guide:
char* p;
char* q;
В C ++ имеет смысл помещать * в идентификатор типа, как char *, так как он является частью самого типа.
Но если вы определяете несколько переменных в одном выражении, это становится двусмысленным и вводящим в заблуждение.
char* foo, bar;
В то время как foo теперь имеет тип char *, bar имеет тип char. Поэтому многие люди предпочитают
char *foo, bar;
, чтобы прояснить это.
учитывая, что можно сделать многократные объявления на одной строке, она имеет больше смысла мне, что она принадлежит переменной, а не типу, например,
char *pString, arrString[20];
В большинстве случаев std::string str
гораздо предпочтительнее, чем char *
.
При этом я обычно делаю что-то вроде DataType * ptr
, чтобы лучше выделить *
. Или, гораздо чаще, std::tr1::smart_ptr<DataType> ptr
, или, может быть, auto_ptr
.
Очень просто, необработанные указатели опасны для использования во многих отношениях, и если я собираюсь использовать один, я хочу, чтобы он выделялся.
Мне действительно нравится" char* foo
" идиома, потому что она помещает всю информацию о типе переменной в одном месте". char *foo
" может довольно сбивать с толку, если" *foo
" часть снабжается вкладками на полпути через экран!
, С другой стороны, я действительно соглашаюсь с другими плакатами, что это сбивает с толку при объявлении нескольких переменных на одной строке. Я пытаюсь не смешать типы при объявлении, что несколько переменных на одной строке, и char
и char*
являются отдельными типами в моем уме, так, чтобы конкретная ситуация не была той, которая, вероятно, произошла бы в моем коде.
Мой ответ: ни один, необходимо использовать:
char * string;
Рассматривают, если бы Dennis Ritchie (разработчик языка C) вместо того, чтобы использовать '*' символ использовал ключевое слово 'ptr', мы должны были бы все говорить:
char ptr string;
и не имеющий эти обсуждения.
Это также, по моему скромному мнению, более читаемо.
Я также думаю символ*, нечто имеет больше смысла при объявлении единственной переменной.
единственное время я использую другой формат, при объявлении нескольких переменных на одной строке, таких как:
символ *нечто, панель;
Лично я никогда не объявляю несколько переменных на одной строке.
Из-за этого и то, что я действительно нахожу шаблоны хорошими, я нахожу это простое обращение шаблона:
type varname
Это означает, что я почти всегда говорю, что интервал [] iArray или интервал* piArray (или независимо от того, что венгерская запись была бы, я не использовал C++ за десятилетие).
Это также означает, что я никогда не использую интервал iArray [], так как то, что это - массив, является частью типа, не именем переменной.
Взгляды этот путь помог мне упростить определения несколько раз также.
Просто предложение другого POV
Первое предложение (символа* var) было бы прекрасно, пока Вы только объявили единственную переменную на строку, но лично, я предпочитаю "символ *var"; и единственная переменная на строку - это может сделать функцию дольше в количестве строки, но очень ясно.
Наконец, C++ должен использовать "строковый var", но мы всегда заканчиваем или наследовавший код с "символом *" или имеющий необходимость соединиться с библиотеками неC++.