Как передать 64-битное значение в оболочке vxworks

Как бы вы передали 64-битное значение функции в консоли vxworks?

Например, это работает:

[C INTERP]->tickSet 0x1fffff
value = 2097151 = 0x1fffff

Принимая во внимание, что это:

[C INTERP]->tick64Set 0xfffffffff
C interp: '0xfffffffff' is not a valid integer value.

Не делает.


person mjs    schedule 16.10.2013    source источник


Ответы (1)


Вы можете добавить «ull», чтобы обозначить, что это unsigned-long-long:

-> 0xfffffffff   
C interp: '0xfffffffff' is not a valid integer value.
-> 0xfffffffffull
value = 68719476735 = 0xfffffffff
-> 
person woolfie    schedule 16.10.2013
comment
Ваше здоровье. Почти все готово, хотя возвращаемое значение из указанного вызова функции по-прежнему выглядит не совсем правильно. Я предполагаю, что это, вероятно, просто оболочка, неправильно обрабатывающая его: ->tick64Set 0x123456789ull value = 591751049 = 0x23456789 - похоже, он отрезал самый значащий байт. - person mjs; 17.10.2013
comment
Да, оболочка обрезает возврат. Вы можете сказать, что были переданы правильные параметры, запустив эту функцию void printTickLib() { UINT64 tick64=0; ULONG tick32=0; tick64=tick64Get(); tick32=tickGet(); printf("Tick 64 %llu (0x%llx) Tick32 %lu (0x%0x)\n", tick64,tick64, tick32,tick32); } - person mjs; 17.10.2013