#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <string.h>
#include <inttypes.h>
#define setarr(a) [sizeof(a)-1] = (a) // remove NULL from end of string
// Осторожно, говномакросы
#define assign_1(a,begin)\
{\
typeof (begin) m_cnt = begin;\
a = (typeof (a))(*m_cnt);\
}\
#define assign_2(a,b,begin)\
{\
typeof (begin) m_cnt = begin;\
a = (typeof (a))(m_cnt);\
m_cnt += sizeof(a);\
b = (typeof (b))(m_cnt);\
}\
#define assign_3(a,b,c,begin)\
{\
typeof (begin) m_cnt = begin;\
a = (typeof (a))(m_cnt);\
m_cnt += sizeof(a);\
b = (typeof (b))(m_cnt);\
m_cnt += sizeof(b);\
b = (typeof (c))(m_cnt);\
}\
void I_print(void* data)
{
size_t* s_sz; // = data;
uint8_t* s_data; // = data+sizeof(*s_sz);
assign_2(s_sz,s_data,data)
write(1, s_data, *s_sz);
}
void* I_pr[1000];
void** I_pr_ptr = I_pr;
int main(void)
{
const uint8_t word setarr("Hello, World\n");
void* a
= malloc(sizeof(size_t) + sizeof(uint8_t)*sizeof(word) );
{
size_t* tmp = a;
*tmp = sizeof(word);
}
memcpy (a
+(sizeof(size_t)), word
, sizeof(word
));
I_print(a);
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8dW5pc3RkLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGludHR5cGVzLmg+CgojZGVmaW5lIHNldGFycihhKSAgW3NpemVvZihhKS0xXSA9IChhKSAvLyByZW1vdmUgTlVMTCBmcm9tIGVuZCBvZiBzdHJpbmcKCi8vINCe0YHRgtC+0YDQvtC20L3Qviwg0LPQvtCy0L3QvtC80LDQutGA0L7RgdGLCgojZGVmaW5lIGFzc2lnbl8xKGEsYmVnaW4pXAp7XAogIHR5cGVvZiAoYmVnaW4pIG1fY250ID0gYmVnaW47XAogIGEgPSAodHlwZW9mIChhKSkoKm1fY250KTtcCn1cCgojZGVmaW5lIGFzc2lnbl8yKGEsYixiZWdpbilcCntcCiAgdHlwZW9mIChiZWdpbikgbV9jbnQgPSBiZWdpbjtcCiAgYSA9ICh0eXBlb2YgKGEpKShtX2NudCk7XAogIG1fY250ICs9IHNpemVvZihhKTtcCiAgYiA9ICh0eXBlb2YgKGIpKShtX2NudCk7XAp9XAoKI2RlZmluZSBhc3NpZ25fMyhhLGIsYyxiZWdpbilcCntcCiAgdHlwZW9mIChiZWdpbikgbV9jbnQgPSBiZWdpbjtcCiAgYSA9ICh0eXBlb2YgKGEpKShtX2NudCk7XAogIG1fY250ICs9IHNpemVvZihhKTtcCiAgYiA9ICh0eXBlb2YgKGIpKShtX2NudCk7XAogIG1fY250ICs9IHNpemVvZihiKTtcCiAgYiA9ICh0eXBlb2YgKGMpKShtX2NudCk7XAp9XAoKCgp2b2lkIElfcHJpbnQodm9pZCogZGF0YSkKewogIHNpemVfdCogc19zejsgLy8gPSBkYXRhOwogIHVpbnQ4X3QqICBzX2RhdGE7IC8vID0gZGF0YStzaXplb2YoKnNfc3opOwogIGFzc2lnbl8yKHNfc3osc19kYXRhLGRhdGEpCiAgd3JpdGUoMSwgc19kYXRhLCAqc19zeik7Cn0KCnZvaWQqIElfcHJbMTAwMF07CnZvaWQqKiBJX3ByX3B0ciA9IElfcHI7CgppbnQgbWFpbih2b2lkKQp7CiAgY29uc3QgdWludDhfdCB3b3JkIHNldGFycigiSGVsbG8sIFdvcmxkXG4iKTsKICB2b2lkKiBhID0gbWFsbG9jKHNpemVvZihzaXplX3QpICsKICAgICAgICAgICAgICAgICAgIHNpemVvZih1aW50OF90KSpzaXplb2Yod29yZCkgKTsKICB7CiAgICBzaXplX3QqIHRtcCA9IGE7CiAgICAqdG1wID0gc2l6ZW9mKHdvcmQpOwogIH0KCiAgbWVtY3B5IChhKyhzaXplb2Yoc2l6ZV90KSksIHdvcmQsIHNpemVvZih3b3JkKSk7CiAgCiAgCiAgSV9wcmludChhKTsKICByZXR1cm4gMDsKfQo=