Перейти к содержанию
    

den_po

Участник
  • Постов

    139
  • Зарегистрирован

  • Посещение

Весь контент den_po


  1. Косяк у Кейла

    Не знаю, что должна показать эта ссылка, у меня недостаточно прав для её просмотра. И не знаю, что это за айпишник в ссылке, он не мой. Что я писал здесь, и с чем вы спорили, это что int function(); и int function(void); в сях - разные вещи, и что первый вариант позволяет передать функции любое число аргументов. Вы сами это позже подтвердили, так в чём же моя глупость? Если бы её подтягивали из C++, она бы и работала как в C++ - означала бы, что функция не принимает аргументов. Нет? Объявление функции с пустыми скобками - это не прототип по определению, но всё ещё допустимая стандартом конструкция. Из черновика c89: The empty list in a function declarator that is not part of a function definition specifies that no information about the number or types of the parameters is supplied. Из черновика c11: The empty list in a function declarator that is not part of a definition of that function specifies that no information about the number or types of the parameters is supplied. Это если включить "require prototypes".
  2. Косяк у Кейла

    Ну то есть что вы сначала оспаривали мои слова, а потом с ними согласились, это мой провал? Ну ок, "гуру" меня размазал. Неявное объявление функции при первом использовании - вот, наверное, самое отвратительное в сях.
  3. Косяк у Кейла

    Молодец, нашёл.
  4. Косяк у Кейла

    Упёртый. Ясно. А ведь убедиться, что я прав, так легко...
  5. Косяк у Кейла

    Вы из тех, кто считает себя слишком опытным, чтоб допустить свою неправоту, да?
  6. Косяк у Кейла

    С того же 89 оно упоминается. Тогда оно было "устаревающим", сейчас устаревшее, но из стандарта не удалённое. Гуглите, читайте, пробуйте.
  7. Косяк у Кейла

    Отличие и сейчас есть. Первый вариант позволяет вызвать функцию с любым числом аргументов.
  8. Косяк у Кейла

    int function(); и int function(void); это в си совсем не одно и то же
  9. Косяк у Кейла

    А что стали обозначать пустые скобки со стандарта 89 года, там написано?
  10. Виснущий девайс для пользователя гораздо хуже работающего кое как. Тем более, что пользователь зачастую и не замечает, что перед ним это самое "кое как". Отключены они из-за того, что пользователю они ни к чему. Лучше пользователю от них не станет, а хуже может. Они и разработчикам не нужны в большинстве случаев. Я не про ассерты вообще и разработчиков вообще, я про конкретно ситуацию с мобилками и телевизорами. У разработчиков/тестеров есть дебаг сборки прошивок, но и там включают ассерты не везде, а лишь в части модулей/библиотек. Закруглюсь, пожалуй, с этой темой. Сказал уже всё, что мог, нового ничего не добавлю.
  11. Нет. Ассерт - просто средство отладки. Он нужен программисту, но никак не конечному пользователю. Если б всё было так, всякие мобильники и телевизоры постоянно бы висли или вырубались. Ну и в иных местах просто были бы тормознее.
  12. assert - часть стандартной библиотеки, что на него влияет, описано в стандарте. Рассчитывать, что ваш код всегда будет работать с перепиленной вами версией макроса, - раскидывать грабли. Во время отладки да, а при работе у конечных пользователей остановка программы зачастую гораздо хуже продолжения её выполнения.
  13. Если речь об исходниках FreeRTOS, то там используется макрос configASSERT, и именно по умолчанию там реализация - "ничего". FreeRTOS\Source\include\FreeRTOS.h: #ifndef configASSERT #define configASSERT( x ) #define configASSERT_DEFINED 0 #else #define configASSERT_DEFINED 1 #endif Да, исправляюсь, в assert и подобные макросы заворачивают вызовы функций, но только те, удаление которых не влияет на ход работы программы. Это точно не ваш случай. В вашем случае нужно сохранять результат вызова в переменные и в ассертах использовать именно их. Попробуйте скомпилировать ваш проект в релизной конфигурации (с объявленным в настройках препроцессора макросом NDEBUG) и убедитесь.
  14. Потому что assert это макрос, который в релизных конфигурациях обычно разворачивается в "ничто", то есть содержимое скобок в релизе просто игнорируется.
  15. про обнуление не скажу, а вот вызовы функций в ассерты заворачивать нельзя
  16. Keil RTX & watchdog

    а у меня кроме железного ватчдога есть ещё велосипедные - на отдельные задачи
  17. xHeapRegions правильно заданы? Вообще heap_5 нужно, если под кучу отводится несколько блоков памяти, располагающихся в разных местах. Если вам такое не нужно, попробуйте heap_4.
  18. Ох уж эти ENUM

    Да, если не забыть защититься от возможных ошибок, связанных с порядком байтов.
  19. Ох уж эти ENUM

    Ваша версия IAR так не умеет? enum A : short { };
  20. Косяк у Кейла

    а если DELAY(50ULL, _SS); ?
  21. Можно и номер ревизии получить, только толку от него нет. С гитом стоит использовать хеш, можно сокращённый. Например так: git log -1 --pretty=format:"#define FWVERHASH 0x%%h" > gitver.h
  22. Или можно посмотреть на реализации, использующие FastDelegate, например https://github.com/pbhogan/Signals
  23. LPC8xx (cortex m0) Вроде в MSP430 система команд похожая. Эх, где ж сейчас КР1801ВМ1? :-D
×
×
  • Создать...