Jump to content

    

HEX

Свой
  • Content Count

    54
  • Joined

  • Last visited

Community Reputation

0 Обычный

About HEX

  • Rank
    Участник

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array
  1. у меня собственно так и есть, универсальность эта другая тема. да жульничество, но интервейс вызова Read(void* Buff, int N) достаточно широко используется, есть и другие варианта попадание мусора в bool. Но проверять значение после подозрительных мест надо обязательно. Потом такой момент, если используется swtich, пусть даже с параметром enum, все равно в голове помним о левых значениях, которые обработаем default. При работе с bool переменными думается true/false, а там может и вигная какая то быть, причем "заразная", передается присваиванием ( B2 = B1 ). А явное преобразование B = (bool)( B ) по моему, должно работать четко.
  2. я в этом вижу потенциальную проблему, например, при чтении бинарного файла данных.Придется производить доп. операции, что бы избавиться от мусора: //data.bin = {0x0D, 0x00, 0x00, 0x00} f = fopen("data.bin", "r"); fread(&B, sizeof(B), 1, f); //B = 13 fclose(f); //Избавляемся от мусора if (B) B = true; else B = false;
  3. Если бы не мешали я бы может и не заметил: //B = 13 if (B == true) printf("true\n"); else printf("false\n"); B = !B; if (B == true) printf("true\n"); else printf("false\n"); выводит только "true"
  4. явное преобразование типа тоже не помогает: B2 = (bool)(B); //B2 = 12
  5. #include <stdbool.h> int main() { bool B; B = 13; //B = 1 B = !B; //B = 0 unsigned char* Ptr; Ptr = (unsigned char*)(&B); *Ptr = 13; //B = 13 bool B2; B2 = B; //B2 = 12 B2 = !B; //B2 = 13 return 0; } Почему при присваивание непосредственно числа все нормально ( B = 13 ), а при присваивании другово bool ( B2 = B ) мусор остается? Так и должно быть?
  6. Все должно работать, см руководство на компилер раздел DLIB runtime environment. Надо только включить соотв. опцию линкера (если текст в окне появился, значит включено, тока почему дата левая?). Что подрузомивается под "досовского turboC"? А так очень нужная и полезная штука.
  7. причиной можте быть что нет сигнала rst при включении питания, а при запуске в отладчике сигнал сброса формирует jlink
  8. организация структуры проекта мне попадалась только тут: Таненбаум "Операционные системы разработка и реализаци" но и по инету полазить можно
  9. А как можно подключать си-шный файлы из библиотеки к проекту?
  10. Книжки, все достоваемо в инете. - Сэм Канер, Джек Фолк "Тестирование ПО" - Д.Макгрегор, Д.Сайкс "Тестирование объектно-ориентирования ПО" - Капберстон "Быстрое тестирование" советую посмотреть на форуме rsdn.ru там есть ветка посвященная тестированию
  11. File operation

    В опциях проекта необходимо установить: - General Options\Library Configuration = Full - Linker \With I/O emulation modules = true дальше как обычно, например, fopen, fread,...
  12. Я разводкой плат к счастью, а может, к сожалению не занимаюсь, и в этих вопросах мало компетентен. Это был просто случай из моего опыта. Фотку бы показал, да сейчас это платы уже нету.
  13. Был похожий случай: пластиковый корпус, внутри плата с lpc2134, при воздействии статическим электричеством, например, снятие защитного полиэтилена с корпуса, проц достаточно стабильно зависает (при этом сильно грелся), лечилось только передергиванием питания, сброс не помогал. Если кто знает просветите, возможность возникновения такой ситуации зависит от семейства проца или в любом случае соотношение качество разводки / уровеня помех?
  14. Может кому пригодиться. Сама идея описана здесь, вот еще статья на эту тему, спасибо авторам. Log.h #ifndef LOG_H #define LOG_H #include "Config.h" #include <stdbool.h> #if (LOG_LEVEL > 0) #include <iostream> #endif //Приоритеты (типы сообщений) #define LOG_NONE 0 #define LOG_FATAL 1 #define LOG_ERROR 2 #define LOG_WARNING 3 #define LOG_NOTICE 4 #define LOG_INFO 5 //Уровень фильтрации сообщений лога #ifndef LOG_LEVEL #define LOG_LEVEL (LOG_NONE) #endif class Logger { private: public: Logger(void); static void AddMess(int Level, const char *mess, ...); static void AddStr(const char *mess, ...); }; //Добавить Info сообщение в лог #define LogInfo(...) \ if (LOG_LEVEL >= LOG_INFO) { \ Logger::AddMess(LOG_INFO, __VA_ARGS__); \ } \ //Добавить Notice сообщение в лог #define LogNotice(...) \ if (LOG_LEVEL >= LOG_NOTICE) { \ Logger::AddMess(LOG_NOTICE, __VA_ARGS__); \ } \ //Добавить Warning сообщение в лог #define LogWarning(...) \ if (LOG_LEVEL >= LOG_WARNING) { \ Logger::AddMess(LOG_WARNING, __VA_ARGS__); \ } \ //Добавить Error сообщение в лог #define LogError(...) \ if (LOG_LEVEL >= LOG_ERROR) { \ Logger::AddMess(LOG_ERROR, __VA_ARGS__); \ } \ //Добавить Fatal сообщение в лог #define LogFatal(...) \ if (LOG_LEVEL >= LOG_FATAL) { \ Logger::AddMess(LOG_FATAL, __VA_ARGS__); \ } \ //Добавить строку в лог #define LogStr(...) \ if (LOG_LEVEL >= LOG_FATAL) { \ Logger::AddStr(__VA_ARGS__); \ } \ #endif //LOG_H Log.cpp #include "Log.h" #include <cstdarg> //Имена типов сообщений const char LevelNames[6][8] = { "", "Fatal", "Error", "Warning", "Notice", "Info" }; //----------------------------------------------------------------------------- // Logger //----------------------------------------------------------------------------- //Конструктор Logger::Logger(void) { } //Добавить строку в лог //mess: // Сообщение //...: // Дополнительные аргументы в стиле printf void Logger::AddStr(const char *mess, ...) { #if (LOG_LEVEL > 0) va_list args; va_start(args, mess); vprintf(mess, args); va_end(args); printf("\n"); #endif } //Добавление сообщения в лог //Level: // Тип сообщения //mess: // Сообщение //...: // Дополнительные аргументы в стиле printf void Logger::AddMess(int Level, const char *mess, ...) { #if (LOG_LEVEL > 0) va_list args; //тут можно добавить вывод строки дата/время //... //Тип сообщения if ((Level > LOG_NONE) && (Level <= LOG_INFO)) { printf(" %s: ", LevelNames[Level]); } //Сообщение va_start(args, mess); vprintf(mess, args); va_end(args); printf("\n"); #endif } Config.h #ifndef CONFIG_H #define CONFIG_H //Уровень лога отлади 0..5 #define LOG_LEVEL 4 #endif //CONFIG_H
  15. Мусор может появляться если выходы драйвера ни куда не подтянуты: "прямой" должен быть подтянут к "+", "инверсный" к земле.