【发布时间】:2016-06-15 04:44:31
【问题描述】:
我想将硬编码的 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)
还有一些更疯狂的组合,我很惭愧在这里写...
请记住:我确实不想创建一个新变量来保存数组。
【问题讨论】:
-
C 还是 C++?下定决心。
-
memcpy(dest, "\xAB\x13\xF9\x93\xB5",5); -
@n.m.标题写的是 C,所以我猜是 C。
-
@fritzone 我们要求您澄清语言不是为了惹恼您,而是因为 C 和 C++ 中的答案会有所不同。如果您对两者都感兴趣,请考虑提出两个单独的问题。
-
cccc.c是我的文件名。 :)