0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
1 | |
Ошибка в time.h?17.07.2016, 21:40. Показов 8755. Ответов 47
Метки нет (Все метки)
Есть простой код. Сначала заполняется структура (struct tm), в нее заносятся начальные значения. Затем она преобразуется в тип time_t. Но преобразуется не правильно. Значение почти в два раза больше (в целочисленном значении). Код проверялся под IAR для stm8. Этот же код на арме исполняется нормально. В чем проблема?
Код
#include "timi.h" time_t now; struct tm *ts; void main( void ) { ts->tm_sec=0; ts->tm_min=0; ts->tm_hour=0; ts->tm_mday=1; ts->tm_mon=6; ts->tm_year=2016-1900; ts->tm_wday=5; ts->tm_yday=182; ts->tm_isdst=-1; now=mktime(ts); //now=1467331200; Должно получиться ts=gmtime(&now); }
0
|
17.07.2016, 21:40 | |
Ответы с готовыми решениями:
47
Ошибка выходящего параметра (time without time zone) Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"? Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"? Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......" Ошибка run time error 6 overflow, что не так? (без cost.Text = c6 вроде сначала робил, а потом удалял и всё равно ошибка |
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
21.07.2016, 11:08 | 41 |
0
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
21.07.2016, 16:16 | 42 |
Сообщение от div
0
|
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 44
|
|
22.07.2016, 13:51 | 43 |
Сообщение от PRS
Именно структуру? http://pubs.opengroup.org/onlinepubs/00 ... imi.h.html ;) Просто в добрые старые времена понимание того, что засунутая в микроволновку для просушки кошка вывалится оттуда с некторой потерей качества её дальнейшей жизни, полагалось само собой разумеюшимся и расписывать, что раз уж некая функция возвращает указатель, который мы ей не передавали - то, подобно горячей картошке, указатель этот нужно, использовав по назначению, немедленно оставить в покое, не считалось нужным. Чем не владеем -> то не контролируем -> ждём от него пакостей -> банальный здравый смысл заставляет делать собственную копию. Гугл свидетель - реализациям gmtime несть числа, но пяток первых попавшихся - это либо глобальный статический буфер, либо статический локальный что суть одно и тоже с т.з. того, кто пользует функцию. Тем не менее классика жанра заставляет останавливаться перед зелёным сигналом светофора в опасении "а вдруг там другой мастер-джигит сейчас на красный едет?!" - т.е., оптимизируя свою программу по самые помидоры, полагаться, что в реализации библиотеки не принял участие подобный нам оптимизатор 10040-го левела, заюзавший один буффер на всё про всё и что невинный вызов другой функции из семейки не похерит данные в "оптимизированном" буффере, а их, на минуточку, мы ещё надеялись использовать, - се несколько самонадеянно. Но, конечно, Практика критерий Истины - если не взорвалось в руках разработчика - возможно и пользователь будет цел. А уж если исходные тексты библиотеки у нас - так и вообще (Знание - Сила!) можно самолично убедиться в безопасности такого использования внутренних буфферов библиотеки - кто посмеет бросить тогда камень в нашу сторону? Ну разве что какой озабоченный портабельностью поднимет свою лапку с намозоленными подушечками пальцев в бессильном протесте. Конечно, лет эдак через пять будет шанс вспомнить его противную очкастую харю, когда скопированный нами не приходя в сознание код таки бабахнет с новой библиотекой - но до того ещё дожить надо, правда? Да и без бабахов этих порой жить скучно - мозг, привыкший к головоломкам, чахнет. :)
0
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
|
22.07.2016, 15:02 | 44 |
Сообщение от syorzhuk
Просто в добрые старые времена понимание того, что засунутая в микроволновку для просушки кошка вывалится оттуда с некторой потерей качества её дальнейшей жизни, полагалось само собой разумеюшимся и расписывать, что раз уж некая функция возвращает указатель, который мы ей не передавали - то, подобно горячей картошке, указатель этот нужно, использовав по назначению, немедленно оставить в покое, не считалось нужным. Чем не владеем -> то не контролируем -> ждём от него пакостей -> банальный здравый смысл заставляет делать собственную копию. Гугл свидетель - реализациям gmtime несть числа, но пяток первых попавшихся - это либо глобальный статический буфер, либо статический локальный что суть одно и тоже с т.з. того, кто пользует функцию. Тем не менее классика жанра заставляет останавливаться перед зелёным сигналом светофора в опасении "а вдруг там другой мастер-джигит сейчас на красный едет?!" - т.е., оптимизируя свою программу по самые помидоры, полагаться, что в реализации библиотеки не принял участие подобный нам оптимизатор 10040-го левела, заюзавший один буффер на всё про всё и что невинный вызов другой функции из семейки не похерит данные в "оптимизированном" буффере, а их, на минуточку, мы ещё надеялись использовать, - се несколько самонадеянно. Но, конечно, Практика критерий Истины - если не взорвалось в руках разработчика - возможно и пользователь будет цел. А уж если исходные тексты библиотеки у нас - так и вообще (Знание - Сила!) можно самолично убедиться в безопасности такого использования внутренних буфферов библиотеки - кто посмеет бросить тогда камень в нашу сторону? Ну разве что какой озабоченный портабельностью поднимет свою лапку с намозоленными подушечками пальцев в бессильном протесте. Конечно, лет эдак через пять будет шанс вспомнить его противную очкастую харю, когда скопированный нами не приходя в сознание код таки бабахнет с новой библиотекой - но до того ещё дожить надо, правда? Да и без бабахов этих порой жить скучно - мозг, привыкший к головоломкам, чахнет. :) История сего всего топика показывает что ТС такие длинные тексты не читает и ссылки, любезно предоставленным мимо проходящими добра желателями, не посещает. По крайней мере у меня сложилось такое впечатление.
0
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
22.07.2016, 23:34 | 45 |
Всем чмоки в этом чатике)))
Изначально я создавал свою структуру, но указатель начинал прыгать по адресам. Это не по "офф. докам", а по отладчику. Дальше, читающие доки предложите вариант оптимальней для задачи - "Самый простой пример - часовое время с ГПС. С приемника приходит время по гринвичу в формате hhmmss и дата ddmmyy. Мне надо перейти к местному времени, с возможным изменением даты. Соответственно я заполняю структуру, перевожу в time_t, целочисленно прибавляю пояс и перевожу обратно. На выходе у меня местное время с минимальными телодвижениями. И для начала этих действий мне нужно получить указатель на эту структуру, вызвав gmtime впустую. Потом уже можно использовать полученный адрес, но первый вызов будет именно с пустыми/не валидными данными." Для особо упертых уточню - начальных данных нет никаких, кроме часового пояса в еепром. А потом еще раз расскажите что мне этот указатель не нужен))) Ну и про использование localltime не забудьте.
0
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
23.07.2016, 12:59 | 46 |
Сообщение от PRS
struct tm *ts; никакой структуры не создавалось. а использовать внутренние статические переменные по возвращаемому указателю для каких-то своих целей это из той же серии что и писать куда попало по непроинициализированным указателям - ССЗБ. и что самое удивительное, что такое указатели не понимает PRS, а виноват конечно же timi.h, очевидно в нём ошибка. обычно сразу компилятор обвиняют, ему такой замечательный код скормили, а криворукие индусы понаписали там чёрти что, вот он и конпилит неправильно!!!11
0
|
0 / 0 / 0
Регистрация: 17.01.2016
Сообщений: 44
|
|
23.07.2016, 14:35 | 47 |
Сообщение от PRS
0
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
23.07.2016, 14:55 | 48 |
Сообщение от _pv
Сообщение от syorzhuk
0
|
23.07.2016, 14:55 | |
23.07.2016, 14:55 | |
Помогаю со студенческими работами здесь
48
Ошибка Run-Time Ошибка с библиотекой time.h Ошибка Run-time error ''76'' В чем ошибка? (time.strptime) Ошибка компиляции и функция time Ошибка Run-time error ' 13' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |