source
memcpy へのパラメーターとしてハードコードされた char 配列を渡したい...次のようなもの:
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);
だから、質問:
( http://www.cplusplus.com/reference/cstring/memcpy/ )のソースパラメータとしてハードコードされた配列を渡すにはどうすればよいですか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)
そして、ここに書くのが恥ずかしいいくつかの非常識な組み合わせ...
覚えておいてください:配列を保持するために新しい変数を作成したくありません。