|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
||||||
Ошибка в time.h?17.07.2016, 21:40. Показов 9309. Ответов 47
Метки нет (Все метки)
Есть простой код. Сначала заполняется структура (struct tm), в нее заносятся начальные значения. Затем она преобразуется в тип time_t. Но преобразуется не правильно. Значение почти в два раза больше (в целочисленном значении). Код проверялся под IAR для stm8. Этот же код на арме исполняется нормально. В чем проблема?
0
|
||||||
| 17.07.2016, 21:40 | |
|
Ответы с готовыми решениями:
47
Что за ошибка: "E2015 Ambiguity between 'time' and 'std::time"? |
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
||
| 19.07.2016, 12:40 | ||
Зачем? Доку почитайте. Вы вызываете функцию, она работает, и складывает результат своей работы у себя внутре, а вы пользуете этот результат.
0
|
||
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
||
| 19.07.2016, 12:55 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
|||||||
| 19.07.2016, 13:28 | |||||||
Current time around the World: Phoemyx, AZ (U.S.) : 8:22 Reykjavik (Icelomd) : 15:22 Beijing (China) : 23:22
0
|
|||||||
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
||
| 19.07.2016, 16:44 | ||
|
[QUOTE="shibtym"][QUOTE="Цитата:[/QUOTE]
ptm = gmtime ( &rawtime); Так я об этом и пишу. Что в начале вызываем gmtime и используем полученный указатель. И свои структуры объявлять не нужно и память под эту структуру выделять тоже не надо.
0
|
||
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
||
| 19.07.2016, 18:36 | ||
Я, например, не знаю, но думаю, что она, скорее всего, используя данные из переданной ей структуры, тут же записывает новые данные в свою структуру. И таким образом, если сделать, как вы хотите, то, записав половину "своей" (а на самом деле, исходной, вы же так ей подсунули) структуры, продолжает свои расчеты, но уже с поломанными данными, ведь половина их уже ей же испорчена! Это раз. Два: даже если этот вариант прокатывает и у вас работает, то вполне себе вероятно, что в следующей версии компилятора или библиотеки разрабам вдруг взбрендит изменить реализацию на именно такую как я только что описал. И еще раз: Не надо ничего предварительно вызывать. Вы сначала свою структуру объявляете для исходных данных и передаете ее функции. У нее (у функции) есть своя область памяти, она (память) там всегда есть, во время выполнения вашей программы, куда она (функция) записывает результат своей работы и возвращает вам указатель на эти (свои внутренние) данные. Динные эти объявленны как static и присутствуют всегда до конца работы вашей программы. Неужели у вас не найдется в стеке лишних 10-16 байт, или сколько там их?
0
|
||
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
||||||
| 19.07.2016, 19:12 | ||||||
|
Как она работает я тоже не знаю. Но по примерам делают именно как я и написал.
Единственное отличие, что они используют текущее время компа для начальной инициализации, которого у меня нет. Моя первая ошибка и была, что я не получив адреса структуры пытался загнать в нее данные.
0
|
||||||
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||
| 19.07.2016, 19:25 | ||
именно тут и происходит выделение памяти. статически. ошибочно подумал, что обсуждают другую переменную
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
| 19.07.2016, 19:36 | |
|
Ага. И много выделяют? Поместится ли туда struct tm?
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
|||
| 19.07.2016, 23:38 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
| 20.07.2016, 01:51 | |
|
Я про структуру struct tm. Просто нигде не говорилось что сначала нужно вызвать gmtime и получить на нее ссылку. Тем более у микроконтроллеров зачастую свой, особый путь))))
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
||
| 20.07.2016, 09:06 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
|
| 20.07.2016, 09:12 | |
|
вот блин не поленился, посмотрел, как она устроена, эта функция. http://www.ethernut.de/api/gmtime_8c_source.html
На строке 72 мы видим, что в библиотеке объявлена глобальная структура _tb, адрес которой вам на строке 200 возвращается. Видие? Она УЖЕ есть. Функцию НЕ надо предварительно вызывать для какого то там выделения памяти.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
||
| 20.07.2016, 09:13 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
||
| 20.07.2016, 15:10 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
||
| 20.07.2016, 15:34 | ||
Хм. Никак. Но позвольте спросить: Зачем? В чем заключается сакральный смысл доступа к этой структуре без каких либо данных, а если туда их самому записать, то при вызове этой функции или localtime (вы же внимательно прочитали страницу с докой? ) все эти данные похерятся.
0
|
||
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
||
| 20.07.2016, 18:11 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
||||||
| 20.07.2016, 19:08 | ||||||
|
Заводи свою структуру.
0
|
||||||
|
0 / 0 / 1
Регистрация: 27.01.2010
Сообщений: 3,435
|
|
| 20.07.2016, 21:48 | |
|
Для всяких часовых и локальных времен есть куча дополнительных стандартных функций. Типа localtime(). Пользуйся ими.
0
|
|
|
0 / 0 / 0
Регистрация: 12.07.2011
Сообщений: 2
|
|
| 20.07.2016, 23:03 | |
|
Зачем плодить сущности и делать копии структур?)))
В моем случае из накладных расходов только один вызов gmtime с 0 параметром для получения указателя. Затем идет целочисленное сложение для коррекции пояса и все. Есть варианты проще? Localltime не годится - время берется из сообщения,а не от встроенного таймера. Точнее его можно использовать, но после синхронизации времени с ГПС, к примеру по ppm сигналам.
0
|
|
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
| 21.07.2016, 11:02 | |
|
Потому что как использовать эту структуру - написано в документации. Все остальное никто не гарантирует. Что ты пытаешься сэкономить?
0
|
|
| 21.07.2016, 11:02 | |
|
Помогаю со студенческими работами здесь
40
Не могу разобраться с заданием "Создайте класс Time с конструкторами Time(), Time( int hour)......" Ошибка run time error 6 overflow, что не так? (без cost.Text = c6 вроде сначала робил, а потом удалял и всё равно ошибка Ошибка Run-Time Ошибка с библиотекой time.h Ошибка Run-time error ''76'' Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|