Что такое & ldquo; static & rdquo; функционировать?

Просто отметив, что если ваше имя задачи действительно длинное, то оно не будет отображаться полностью в результате tasklist, поэтому может быть безопаснее (кроме локализации) проверять обратное.

Вариация этого ответа :

:: in case your task name is really long, check for the 'opposite' and find  the message when it's not there
tasklist /fi "imagename eq yourreallylongtasknamethatwontfitinthelist.exe" 2>NUL | find /I /N "no tasks are running">NUL
if "%errorlevel%"=="0" (
    echo Task Found
) else (
    echo Not Found Task
)

450
задан Alex 5 October 2017 в 14:03
поделиться

7 ответов

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

РЕДАКТИРОВАНИЕ : Для тех, кто думал, что автор вопросов имел в виду 'метод класса': Поскольку вопрос отмечен C, он имеет в виду простую функцию C. Для (C ++/Java/...) методы класса, static средства, которыми этот метод можно назвать на самом классе, никаком экземпляре того необходимого класса.

627
ответ дан Johannes Weiss 6 October 2017 в 00:03
поделиться

Незначительная гнида: статические функции видимы к единице перевода, которая для большинства практических случаев является файлом, в котором определяется функция. Ошибка, которую Вы получаете, обычно упоминается как нарушение Одного Правила Определения.

в стандарте, вероятно, говорится что-то как:

"Каждая программа должна содержать точно одно определение каждой невстроенной функции или объекта, который используется в той программе; никакая диагностика не требуется".

, Который является способом C посмотреть на статические функции. Это удерживается от использования в C++ как бы то ни было.

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

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

6
ответ дан dirkgently 6 October 2017 в 00:03
поделиться
  • 1
    Если Вы сталкиваетесь с @Zjaaspoer' s проблема, перезапустите свое приложение Heroku, и это может освобождать соединение достаточно долго для Вас для выполнения команды уничтожения. – Jamon Holmgren 30 January 2014 в 21:12

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

14
ответ дан raimue 6 October 2017 в 00:03
поделиться

Статическая функция является той, которую можно назвать на самом классе, в противоположность экземпляру класса.

, Например, непомехи были бы:

Person* tom = new Person();
tom->setName("Tom");

Этот метод работает над экземпляром класса, не самого класса. Однако у Вас может быть статический метод, который может работать, не имея экземпляра. Это иногда используется в Шаблоне "фабрика":

Person* tom = Person::createNewPerson();
8
ответ дан Andrew Grant 6 October 2017 в 00:03
поделиться
  • 1
    Хороший вызов! Это выглядит более полезным, чем, что я отправил. – bma 6 November 2013 в 15:46

Во-первых: это обычно - плохая идея включать .cpp файл в другом файле - это приводит к проблемам как это :-) Нормальный путь состоит в том, чтобы создать единицы раздельной компиляции и добавить заголовочный файл для включенного файла.

, Во-вторых:

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

a) static functions - наследованный от C, и о чем Вы говорите здесь. Вне любого класса. Помехи функция средство, что это не видимо вне текущей единицы компиляции - так в Вашем случае a.obj, имеет копию, и Ваш другой код имеет независимую копию. (Чрезмерное увеличение размера заключительного исполняемого файла с несколькими копиями кода).

b) static member function - что Объектная Ориентация называет помехами метод . Жизни в классе. Вы называете это с классом, а не через экземпляр объекта.

Эти два различных статических функциональных определения полностью отличаются. Будьте осторожны - здесь быть драконами.

16
ответ дан kragniz 6 October 2017 в 00:03
поделиться

Существует два использования для ключевого слова, статичного когда дело доходит до функций в C++.

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

// inside some .cpp file:

static void foo();    // old "C" way of having internal linkage

// C++ way:
namespace
{
   void this_function_has_internal_linkage()
   {
      // ...
   }
}

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

74
ответ дан Brian Neal 6 October 2017 в 00:03
поделиться

Существует большая разница между статическими функциями в C и статическими функциями членства в C++. В C статическая функция не видима за пределами своей единицы перевода, которая является объектным файлом, в который это компилируется. Другими словами, делая функциональные помехи пределами его объем. Можно думать о статической функции, как являющейся "частным" в ее *.c файл (хотя это не строго корректно).

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

Нестатические функции членства могут получить доступ ко всем элементам данных класса: статичный и нестатичный. Статические функции членства могут только воздействовать на статические элементы данных.

Один способ думать об этом состоит в том, что в C++ статические элементы данных и статические функции членства не принадлежат никакому объекту, но всему классу.

188
ответ дан Dima 6 October 2017 в 00:03
поделиться
Другие вопросы по тегам:

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