#include <stdio.h>
#include <iostream>
#include <vector>
#include <string.h>
#define MACRO_GET_1(str, i) \
(sizeof(str) > (i) ? str[(i)] : 0)
#define MACRO_GET_4(str, i) \
MACRO_GET_1(str, i+0), \
MACRO_GET_1(str, i+1), \
MACRO_GET_1(str, i+2), \
MACRO_GET_1(str, i+3)
#define MACRO_GET_STR(str) MACRO_GET_4(str, 0)
struct mystruct {
char foo[4];
};
int main() {
mystruct obj{ MACRO_GET_STR("abcd") };
const char* str = "abcd";
std::cout << memcmp(obj.foo, str, 4); // 0
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBNQUNST19HRVRfMShzdHIsIGkpIFwKICAgIChzaXplb2Yoc3RyKSA+IChpKSA/IHN0clsoaSldIDogMCkKCiNkZWZpbmUgTUFDUk9fR0VUXzQoc3RyLCBpKSBcCiAgICBNQUNST19HRVRfMShzdHIsIGkrMCksICBcCiAgICBNQUNST19HRVRfMShzdHIsIGkrMSksICBcCiAgICBNQUNST19HRVRfMShzdHIsIGkrMiksICBcCiAgICBNQUNST19HRVRfMShzdHIsIGkrMykKCiNkZWZpbmUgTUFDUk9fR0VUX1NUUihzdHIpIE1BQ1JPX0dFVF80KHN0ciwgMCkKCnN0cnVjdCBteXN0cnVjdCB7CiAgY2hhciBmb29bNF07ICAKfTsKCmludCBtYWluKCkgewoJbXlzdHJ1Y3Qgb2JqeyBNQUNST19HRVRfU1RSKCJhYmNkIikgfTsKICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJhYmNkIjsKICAgIHN0ZDo6Y291dCA8PCBtZW1jbXAob2JqLmZvbywgc3RyLCA0KTsgLy8gMAoKCXJldHVybiAwOwp9