Я хочу передать массив hardcoded char в качестве параметра source
для memcpy... Что-то вроде этого:
memcpy(dest, {0xE3,0x83,0xA2,0xA4,0xCB} ,5);
Скомпилированный с clang дает следующую ошибку:
cccc.c:28:14: error: expected expression
Если я изменяю его (см. дополнительную скобку):
memcpy(dest,({0xAB,0x13,0xF9,0x93,0xB5}),5);
ошибка, данная clang:
cccc.c:26:14: warning: incompatible integer to pointer
conversion passing 'int' to parameter of
type 'const void *' [-Wint-conversion]
cccc.c:28:40: error: expected ';' after expression
memcpy(c+110,({0xAB,0x13,0xF9,0x93,0xB5}),5);
Итак, вопрос:
Как передать массив hardcoded в качестве исходного параметра memcpy
(http://www.cplusplus.com/reference/cstring/memcpy/)
Я пробовал:
(void*)(&{0xAB,0x13,0xF9,0x93,0xB5}[0]) - syntax error
{0xAB,0x13,0xF9,0x93,0xB5} - syntax error
({0xAB,0x13,0xF9,0x93,0xB5}) - see above
(char[])({0xE3,0x83,0xA2,0xA4,0xCB}) - error: cast to incomplete type 'char []' (clang)
и еще несколько безумных комбинаций, которые мне стыдно писать здесь...
Помните: я НЕ хочу создать новую переменную для хранения массива.