我想将硬编码的 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);
所以,问题:
如何传入硬编码数组作为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)
还有一些更疯狂的组合,我很惭愧在这里写...
请记住:我不想创建一个新变量来保存数组。