реклама на сайте
подробности

 
 
> Переменные long long
inventor
сообщение Sep 3 2015, 12:50
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Как правильно использовать в IAR ?
Процессор Texas Instruments CC3200
Хочу присвоить переменной время в наносекундах или микросекундах
пишется какая то лажа - printf ничего не выводит, хотя пытаюсь и %lld и %Ld
компилятор C99 и вроде должен поддерживать все эти вещи
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tahoe
сообщение Sep 6 2015, 03:33
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(inventor @ Sep 3 2015, 15:50) *
пишется какая то лажа - printf ничего не выводит, хотя пытаюсь и %lld и %Ld
компилятор C99 и вроде должен поддерживать все эти вещи

Он и поддерживает. Должно быть так:
Код
long long    ll = 100500;
printf( "ll = %" PRIu64 "\n\r", ll );


Остальное по аналогии можно найти самостоятельно. См. например тут или тут.

И лучше отойти от всех этих неопределенных short, long и т.п. В Це99 существуют более внятные типы, вроде uint32_t, uint64_t, int64_t...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 6 2015, 07:04
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Tahoe @ Sep 6 2015, 06:33) *
Он и поддерживает. Должно быть так:

Находясь в твердом уме "так" писать не надо. Почему у Автора не получилсь - уже объяснили. По этой причине и использование макросов-оберток вместо явного описания формата ничего не изменит.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Sep 6 2015, 17:37
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(zltigo @ Sep 6 2015, 10:04) *
Находясь в твердом уме "так" писать не надо. Почему у Автора не получилсь - уже объяснили. По этой причине и использование макросов-оберток вместо явного описания формата ничего не изменит.

Прежде чем лезть умничать, неплохо бы проверить/почитать. В IAR, даже с "правильной" библиотекой, действительно могут не работать %lld и %Ld, при этом PRIu64 работает без проблем. За давностью времени, сейчас уже не помню, на каком из IAR с этим сталкивался, возможно ARM, возможно AVR. Но это факт.

Что у автора получилось - я видел. Костыль, да еще и кривой. Мой вариант - рабочий. Причем в отличии от ворчания отдельных граждан, проверено непосредственно в IAR. Почему "так" писать надо, следует из ссылки, что я дал.

Код
#include    <inttypes.h>
#include    <stdio.h>

int        main( void )
{
    long long                ll    =    0;
    uint64_t                u64    =    0;

    while( true )
    {
        printf( "ll = %" PRIu64 "\n", ll );
        printf( "u64 = %" PRIu64 "\n", u64 );

        u64        =    u64 ? u64 << 1 : 1;
        ll        =    ll ? ll << 1 : 1;
    }
}


Терминал:
Код
u64 = 144115188075855872
ll = 288230376151711744
u64 = 288230376151711744
ll = 576460752303423488
u64 = 576460752303423488
ll = 1152921504606846976
u64 = 1152921504606846976
ll = 2305843009213693952
u64 = 2305843009213693952
ll = 4611686018427387904
u64 = 4611686018427387904
ll = 9223372036854775808
u64 = 9223372036854775808
ll = 0
u64 = 0
ll = 1
u64 = 1
ll = 2
u64 = 2
ll = 4
u64 = 4
ll = 8
u64 = 8
ll = 16
u64 = 16
ll = 32
u64 = 32
ll = 64
u64 = 64
ll = 128
u64 = 128
ll = 256
u64 = 256
ll = 512
u64 = 512
ll = 1024
u64 = 1024
ll = 2048
u64 = 2048
ll = 4096
u64 = 4096
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 6 2015, 18:54
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Tahoe @ Sep 6 2015, 20:37) *
Прежде чем лезть умничать, неплохо бы проверить/почитать. В IAR, даже с "правильной" библиотекой, действительно могут не работать %lld и %Ld, при этом PRIu64 работает без проблем.

А то, что муть " PRIu64 " есть ни что иное, как макрос-обертка llu это никакой мыслью в Вас в голове не отозвалось?

CODE
#define __STRINGIFY(a) #a
#define __PRI64(x) __STRINGIFY(l##x)
#define PRIu64        __PRI64(u)

Так что "проверяй" не проверяй.

QUOTE
Но это факт.

Увы, но это бред sad.gif.
QUOTE
Мой вариант - рабочий. Причем в отличии от ворчания отдельных граждан, проверено непосредственно в IAR.

Не сочтите за труд выкинуть муть " PRIu64 " и написать llu и получите точно такой-же рабочий вариант.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Tahoe
сообщение Sep 6 2015, 19:09
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 30-03-06
Из: Москва
Пользователь №: 15 600



Цитата(zltigo @ Sep 6 2015, 21:54) *
Не сочтите за труд выкинуть муть " PRIu64 " и написать llu и получите точно такой-же рабочий вариант.

Вот на данной, конкретной версии EWARM? Вполне допускаю, что так оно и будет. Но это будет вариант "здесь играем, здесь не играем, здесь рыбу заворачивали"(с), в EWARM работает, в каком-нить EWAVR нет... Меня такой вариант не устраивает. Не хватало еще париться со всякой ерундой. Стандартная библиотека C99 предписывает использовать PRIxxx/SCNxxx? Значит их и буду использовать. Да, мне тоже не нравится и не привычно. Но меня никто не спрашивал.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 6 2015, 19:14
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Tahoe @ Sep 6 2015, 22:09) *
Значит их и буду использовать.

Пользуйте, если их уродство глаз не режет, только не надо фантазий о их чудодейственной силе.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- inventor   Переменные long long   Sep 3 2015, 12:50
- - megajohn   Цитата(inventor @ Sep 3 2015, 15:50) комп...   Sep 3 2015, 13:32
|- - inventor   Цитата(megajohn @ Sep 3 2015, 16:32) б-р-...   Sep 3 2015, 13:55
|- - zltigo   QUOTE (inventor @ Sep 3 2015, 16:55) став...   Sep 3 2015, 15:53
|- - inventor   Цитата(zltigo @ Sep 3 2015, 18:53) 1) Как...   Sep 4 2015, 07:28
|- - yes   Цитата(inventor @ Sep 4 2015, 10:28) комп...   Sep 4 2015, 11:54
|- - megajohn   Цитата(yes @ Sep 4 2015, 14:54) в микроко...   Sep 4 2015, 12:12
|- - zltigo   QUOTE (megajohn @ Sep 4 2015, 15:12) скол...   Sep 4 2015, 12:26
|- - yes   Цитата(megajohn @ Sep 4 2015, 15:12) скол...   Sep 4 2015, 15:07
||- - Tahoe   Цитата(zltigo @ Sep 6 2015, 22:14) Пользу...   Sep 6 2015, 19:52
||- - zltigo   QUOTE (Tahoe @ Sep 6 2015, 22:52) Да-да, ...   Sep 6 2015, 20:28
||- - Tahoe   Цитата(zltigo @ Sep 6 2015, 23:28) Это из...   Sep 6 2015, 22:03
||- - scifi   Цитата(Tahoe @ Sep 7 2015, 01:03) Есть га...   Sep 7 2015, 03:57
||- - zltigo   QUOTE (Tahoe @ Sep 7 2015, 01:03) И небол...   Sep 7 2015, 06:26
|- - inventor   Цитата(Tahoe @ Sep 6 2015, 06:33) Он и по...   Sep 8 2015, 05:08
|- - zltigo   QUOTE (inventor @ Sep 8 2015, 08:08) Я СВ...   Sep 8 2015, 05:59
|- - inventor   Цитата(zltigo @ Sep 8 2015, 08:59) Вообще...   Sep 8 2015, 06:34
|- - megajohn   хм, как то странно отработал printf c long long ...   Sep 8 2015, 07:08
|- - megajohn   Цитата(megajohn @ Sep 8 2015, 10:08) хм, ...   Sep 8 2015, 07:31
- - Сергей Борщ   Вы можете продолжать спорить, но когда после перех...   Sep 7 2015, 07:24
- - zltigo   QUOTE (Сергей Борщ @ Sep 7 2015, 10:24) В...   Sep 7 2015, 07:52
- - Сергей Борщ   Цитата(zltigo @ Sep 7 2015, 10:52) а в ее...   Sep 7 2015, 08:50
- - zltigo   QUOTE (Сергей Борщ @ Sep 7 2015, 11:50) М...   Sep 7 2015, 09:24
- - Сергей Борщ   Цитата(zltigo @ Sep 7 2015, 12:24) Такое ...   Sep 8 2015, 06:19
|- - zltigo   QUOTE (Сергей Борщ @ Sep 8 2015, 09:19) Д...   Sep 8 2015, 07:21
- - Kabdim   Цитата(zltigo @ Sep 7 2015, 12:24) char и...   Sep 8 2015, 12:39
- - zltigo   QUOTE (Kabdim @ Sep 8 2015, 15:39) Для эт...   Sep 8 2015, 12:52


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01627 секунд с 7
ELECTRONIX ©2004-2016