Вопросик по синтаксису

Тема в разделе "Arduino & Shields", создана пользователем Paromond, 23 апр 2022.

  1. Paromond

    Paromond Нуб

    в языке программирования ( С++ я так понял ) возможно ли создать функцию в нутри функции?
     
  2. parovoZZ

    parovoZZ Гуру

    А зачем внутри функции создавать ещё одну?
     
  3. DetSimen

    DetSimen Гик

    Нет. В Delphi - можно, я разрешил.
     
  4. конечно , можно. А в чём загвоздка?
     
  5. DetSimen

    DetSimen Гик

    Покажешь, как?
     
  6. AlexU

    AlexU Гуру

    Если применять компилятор из семейства GCC, то примерно так:
    Код (C++):
    int main(void) {

        printf("!!!Hello World!!!\n"); /* prints !!!Hello World!!! */

        int func(int i) {
            return i + 2;
        }

        printf("func: %d\n", func(4));

        return EXIT_SUCCESS;
    }
     
     
  7. User248

    User248 Гик

    С помощью классов и функций, которые что-то возвращают, можно делать что-то похожее. С виду похоже на вызов функции из функции.
    Код (C++):

    #include <iostream>

    using namespace std;

    class a
    {
    public:
      int func1(int i)
      {
      return i + 2;
      }
    };

    a func2()
    {
      a var;
      return var;
    }

    int main()
    {
      cout << func2().func1(5) << endl;
      return 0;
    }
     
     
    Последнее редактирование: 24 апр 2022
  8. User248

    User248 Гик

    Что-то не собирается так в GCC. Как у Вас собралось, интересно?

    В питоне так можно делать, но я не вижу практического применения в этом. Разве что для лучшей читаемости кода. Меня так наоборот путает.
     
  9. AlexU

    AlexU Гуру

    Дело в том, что стандарт языка 'C' допускает определение функций только в контексте файлов, а не пространств имён. А GCC (впрочем, как и некоторые другие компиляторы) нарушает некоторые требования стандарта языка 'C'. Но, вполне вероятно, что эти "нарушения" зависят от версии компилятора.
    Приведённый мною код компилируется версией 9.4 из штатного пакета Ubuntu.