Выплескивание эмоций

Тема в разделе "Флудилка", создана пользователем alp69, 15 окт 2016.

  1. b707

    b707 Гуру

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

    ЗЫ прощу прощения, в первом ответе не уловил прикола - не заметил что вызывается FN(), а не pFN() - потому и спрашивал что не так.
     
  2. Небольшое изменение и gcc перестает ругаться, но та же ошибка все равно есть:
    Код (C++):
    #include <stdio.h>

    void fn(int i)
    {
      printf("fn(%d)\n", i);
    }

    struct C
    {
      typedef void (*FN) (int i);

      FN  pFN;
      int i;

      void m()
      {
        pFN = fn;
      //int i = 1; //Error (multiple decl)
        i   = 1;
        FN(i);     //FN i; //Decl
      //i = fn;    //OK
      //i(2);
      }
    };

    int main()
    {
      C c;
      c.m();

      return 0;
    }
     
     
  3. b707

    b707 Гуру

    при запуске сообщение печатается или нет?
     
  4. Если не убирать комментарии, то нет. Если убрать два последних, то печатается.
     
  5. SergeiL

    SergeiL Оракул Модератор

    И нет варнингов при компиляции? :eek:
     
  6. SergeiL

    SergeiL Оракул Модератор

    Стало интересно, проверил.
    Минимальный код, на который нет варнингов и ошибок в среде ардуино (GCC) - такой:

    Код (C++):
    char buff[50];

    void fn(int i)
    {
      sprintf(buff,"fn(%d)\n", i);
      Serial.println(buff);
    }

    struct C
    {
      typedef void (*FN) (int i);
      void m()
      {
        FN(my_fnc);      
        my_fnc = fn;    
        my_fnc(2);
      }
    };

    void setup()
    {
      Serial.begin(115200); // For debugging output
      C c;
      c.m();

    //  return 0;
    }

    void loop()
    {

    }
     
    Причем код компилируется и работает. Вывод в сериал идет.

    В принципе логично, но для Си-шника - не привычно.
     
  7. Un_ka

    Un_ka Гуру

    GCC умница.
    Должно помочь:
    Код (Bash):
    gcc -Wall
     
    SergeiL нравится это.
  8. SergeiL

    SergeiL Оракул Модератор

    У меня тоже всегда все варнинги включены. Очень полезно.
     
  9. Un_ka

    Un_ka Гуру

    У меня неожиданно появилась два вопроса:
    1. Что заменять сначала: входную дверь возле гардероба или гардероб?
    2. Обозначение оперативный памяти 16M×16bit×8banks означает 8 кластеров по 16 млн ячкеек в каждой по 16 бит? То есть хранятся переменные типа int32_t?
     
  10. akl

    akl Гуру

    [​IMG]
     
    b707, KindMan, Andrey12 и 3 другим нравится это.
  11. Рокки1945

    Рокки1945 Гуру

  12. Airbus

    Airbus Радиохулиган Модератор

    Конечно же дверь! Ибо театр начинается с вешалки а гардероб с двери
     
  13. Рокки1945

    Рокки1945 Гуру

    @Airbus - не могу найти вчерашней темы про кнопки к аналоговому входу - чем там закончилось - что удалили тему? Спасибо!
     
  14. SergeiL

    SergeiL Оракул Модератор

    Нет, тема не удалялась. Она тут
     
    Airbus нравится это.
  15. Airbus

    Airbus Радиохулиган Модератор

    Хз. Некогда следить. Работаю я. В экстремальных погодах. Снег да снег кругом :mad::mad::mad:
     
  16. С некоторых пор есть замена typedef, но на первый взгляд тоже не очень:

    Код (C++):
    #include <stdio.h>

    void fn(int i)
    {
      printf("fn(%d)\n", i);
    }

    struct C
    {
    //typedef void (*FN) (int i);
      using FN = void (*) (int i);

      void m()
      {
        FN(i);
        i = fn;
        i(2);
      }
    };

    int main()
    {
      C c;
      c.m();

      return 0;
    }
    И посмотрел еще раз, как работает проблемная программа - за день простыми средствами вроде таск манагера утечку памяти не увидеть...
     
  17. Un_ka

    Un_ka Гуру

    Со снегом в авиации уже давно научились работать. Сильных боковых ветров у нас нет. А от плохой видимости спасает КГС.
    Попробуйте отладчиками и типа gdb.
     
    Airbus нравится это.
  18. SergeiL

    SergeiL Оракул Модератор

    В новогодние праздники решил включить музычку фоном на даче, и обнаружил, что вот и хрен - полная тишина :(.
    Усилок работать перестал... Забрал его домой (блин килограмм 15, долго ездил в багажнике), думаю разберу будет время - посмотрю.
    Сегодня руки в обед дошли до него, снял крышку, посмотрел... и как то грустно стало :(

    1.png


    2.png

    Дома в паспорте схема была, нужно найти и выписать номиналы электролитов, заказать...

    Чутьем (по щелканью реле) чую, что блок защиты неправильно отрабатывает.
    Не полностью срабатывает (подтягивается) реле защиты от переходных процессов.
    С блока защиты и начну.
     
  19. DetSimen

    DetSimen Гуру

    начинай с питающих электролитов. Тыкни осликом в питание, защита обычно просто так не срабатывет, а вот если в одном плече нефильтрованная постоянка - то запросто.
     
    SergeiL нравится это.
  20. SergeiL

    SergeiL Оракул Модератор

    Спасибо, гляну.
    Летом еще работал, к нему маяк-232 и проигрыватель Ария-102 подключены.