den_po
Участник-
Постов
139 -
Зарегистрирован
-
Посещение
Весь контент den_po
-
Не знаю, что должна показать эта ссылка, у меня недостаточно прав для её просмотра. И не знаю, что это за айпишник в ссылке, он не мой. Что я писал здесь, и с чем вы спорили, это что 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".
-
Ну то есть что вы сначала оспаривали мои слова, а потом с ними согласились, это мой провал? Ну ок, "гуру" меня размазал. Неявное объявление функции при первом использовании - вот, наверное, самое отвратительное в сях.
-
Упёртый. Ясно. А ведь убедиться, что я прав, так легко...
-
Вы из тех, кто считает себя слишком опытным, чтоб допустить свою неправоту, да?
-
С того же 89 оно упоминается. Тогда оно было "устаревающим", сейчас устаревшее, но из стандарта не удалённое. Гуглите, читайте, пробуйте.
-
Отличие и сейчас есть. Первый вариант позволяет вызвать функцию с любым числом аргументов.
-
int function(); и int function(void); это в си совсем не одно и то же
-
А что стали обозначать пустые скобки со стандарта 89 года, там написано?
-
sizeof(bool) не обязан быть 1
-
Виснущий девайс для пользователя гораздо хуже работающего кое как. Тем более, что пользователь зачастую и не замечает, что перед ним это самое "кое как". Отключены они из-за того, что пользователю они ни к чему. Лучше пользователю от них не станет, а хуже может. Они и разработчикам не нужны в большинстве случаев. Я не про ассерты вообще и разработчиков вообще, я про конкретно ситуацию с мобилками и телевизорами. У разработчиков/тестеров есть дебаг сборки прошивок, но и там включают ассерты не везде, а лишь в части модулей/библиотек. Закруглюсь, пожалуй, с этой темой. Сказал уже всё, что мог, нового ничего не добавлю.
-
Нет. Ассерт - просто средство отладки. Он нужен программисту, но никак не конечному пользователю. Если б всё было так, всякие мобильники и телевизоры постоянно бы висли или вырубались. Ну и в иных местах просто были бы тормознее.
-
assert - часть стандартной библиотеки, что на него влияет, описано в стандарте. Рассчитывать, что ваш код всегда будет работать с перепиленной вами версией макроса, - раскидывать грабли. Во время отладки да, а при работе у конечных пользователей остановка программы зачастую гораздо хуже продолжения её выполнения.
-
Если речь об исходниках FreeRTOS, то там используется макрос configASSERT, и именно по умолчанию там реализация - "ничего". FreeRTOS\Source\include\FreeRTOS.h: #ifndef configASSERT #define configASSERT( x ) #define configASSERT_DEFINED 0 #else #define configASSERT_DEFINED 1 #endif Да, исправляюсь, в assert и подобные макросы заворачивают вызовы функций, но только те, удаление которых не влияет на ход работы программы. Это точно не ваш случай. В вашем случае нужно сохранять результат вызова в переменные и в ассертах использовать именно их. Попробуйте скомпилировать ваш проект в релизной конфигурации (с объявленным в настройках препроцессора макросом NDEBUG) и убедитесь.
-
Потому что assert это макрос, который в релизных конфигурациях обычно разворачивается в "ничто", то есть содержимое скобок в релизе просто игнорируется.
-
про обнуление не скажу, а вот вызовы функций в ассерты заворачивать нельзя
-
а у меня кроме железного ватчдога есть ещё велосипедные - на отдельные задачи
-
heap_2 заменил на heap_5
den_po ответил MiklPolikov тема в FreeRTOS
xHeapRegions правильно заданы? Вообще heap_5 нужно, если под кучу отводится несколько блоков памяти, располагающихся в разных местах. Если вам такое не нужно, попробуйте heap_4. -
Да, если не забыть защититься от возможных ошибок, связанных с порядком байтов.
-
Ваша версия IAR так не умеет? enum A : short { };
-
/inc находится в корневой директории
-
Можно и номер ревизии получить, только толку от него нет. С гитом стоит использовать хеш, можно сокращённый. Например так: git log -1 --pretty=format:"#define FWVERHASH 0x%%h" > gitver.h
-
Препроцессор QT/moc
den_po ответил nanorobot тема в GNU/OpenSource средства разработки
Или можно посмотреть на реализации, использующие FastDelegate, например https://github.com/pbhogan/Signals -
LPC8xx (cortex m0) Вроде в MSP430 система команд похожая. Эх, где ж сейчас КР1801ВМ1? :-D