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

Я разместил вопросы о «моей замкнутой петле» или «моей установке пустоты», и люди жалуются, что они действительно не пустоты. Но они! См. Этот пример кода:

void setup() {
  pinMode(13, OUTPUT);
}

void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Очевидно, что setup и loop являются пустотами, потому что они имеют слово void прямо перед ними!


Примечание: это справочный вопрос.

5 голосов | спросил Nick Gammon 23 MaramFri, 23 Mar 2018 08:45:06 +03002018-03-23T08:45:06+03:0008 2018, 08:45:06

2 ответа


6

Это простая ошибка для начинающего разработчика на C ++. Давайте посмотрим на другие языки, такие как PHP:

 function add ($a, $b)
  {
  return $a + $b;
  }

Или Lua:

 function add (a, b)
  return a + b
end

Или JavaScript:

 function add (a, b)
  {
  return a + b;
  }

Или VBscript:

 Function add (a, b)
  add = a + b
End Function

Все эти языки имеют слово «функция», чтобы указать, что вы объявляете функцию.


Итак, как выглядит C ++:

 int add (int a, int b)
  {
  return a + b;
  }

Итак, это должно быть «int» правильно? Или что, если он не возвращает значение?

void loop ()
  {
  }

Теперь это «пустота»? Вид странного имени для функции!

Фактически int и void в этих примерах не являются странными именами для функций. Это возвращаемые типы этих функций. int add (int a, int b) - это функция , которая возвращает int. И void loop () - это функция , которая ничего не возвращает.

Компилятор C ++ может вывести, когда он видит объявление функции из некоторых подсказок:

  • Тип возврата (например, int, float, long)
  • Имя (имя функции)
  • Некоторые круглые скобки (для аргументов функции)

Подумайте о функции слова function как находящемся в духе:

int [function] add (int a, int b)
    ^^^^^^^^^^   <-- don't actually type this!
    {
    return a + b;
    }
ответил Nick Gammon 23 MaramFri, 23 Mar 2018 08:45:06 +03002018-03-23T08:45:06+03:0008 2018, 08:45:06
0

Я думаю, что если вы используете фразу типа «my int a или мой CustomType», люди будут интерпретировать эти фразы как означающие, что у вас есть переменная a, которая является экземпляром int или CustomType.

Согласно http://en.cppreference.com/w/cpp/language /types вы не можете иметь объект или ссылку типа void.

Если у вас есть фраза типа «моя установка void», я думаю, что большинство людей попытаются прочитать это как подразумевающее, что у вас есть переменная setup типа void, которая Я не думаю, что имеет смысл, для большинства людей.

Что вы на самом деле имеете это:

void setup() {
...
}

Я думаю, что большинство людей будет говорить это как «моя настройка функции, которая не принимает аргументов, ничего не возвращает».

ответил nPn 23 MarpmFri, 23 Mar 2018 17:24:47 +03002018-03-23T17:24:47+03:0005 2018, 17:24:47

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132