#include <stdio.h>
struct {
struct {
struct {
char string[128];
char *string_as_charpointer;
char string_as_chararray[];
} msg;
} m;
size_t sizeof_wrapper(char string_as_chararray[]) {
return sizeof(string_as_chararray);
}
int main(void) {
printf("char[128]: %zu\n", sizeof(m.
msg.
log.
string)); printf("char*: %zu\n", sizeof(m.
msg.
log.
string_as_charpointer)); //printf("char[]: %zu\n", sizeof(m.msg.log.string_as_chararray)); // errors out with "invalid application of ‘sizeof’ to incomplete type ‘char[]’"
printf("char[] via wrapper: %zu\n", sizeof_wrapper
(m.
msg.
log.
string)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgewogICAgc3RydWN0IHsKICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICBjaGFyIHN0cmluZ1sxMjhdOwogICAgICAgICAgICBjaGFyICpzdHJpbmdfYXNfY2hhcnBvaW50ZXI7CiAgICAgICAgICAgIGNoYXIgc3RyaW5nX2FzX2NoYXJhcnJheVtdOwogICAgICAgIH0gbG9nOwogICAgfSBtc2c7Cn0gbTsKCnNpemVfdCBzaXplb2Zfd3JhcHBlcihjaGFyIHN0cmluZ19hc19jaGFyYXJyYXlbXSkgewogICAgcmV0dXJuIHNpemVvZihzdHJpbmdfYXNfY2hhcmFycmF5KTsKfQoKaW50IG1haW4odm9pZCkgewogICAgcHJpbnRmKCJjaGFyWzEyOF06ICV6dVxuIiwgc2l6ZW9mKG0ubXNnLmxvZy5zdHJpbmcpKTsKICAgIHByaW50ZigiY2hhcio6ICV6dVxuIiwgc2l6ZW9mKG0ubXNnLmxvZy5zdHJpbmdfYXNfY2hhcnBvaW50ZXIpKTsKICAgIC8vcHJpbnRmKCJjaGFyW106ICV6dVxuIiwgc2l6ZW9mKG0ubXNnLmxvZy5zdHJpbmdfYXNfY2hhcmFycmF5KSk7IC8vIGVycm9ycyBvdXQgd2l0aCAiaW52YWxpZCBhcHBsaWNhdGlvbiBvZiDigJhzaXplb2bigJkgdG8gaW5jb21wbGV0ZSB0eXBlIOKAmGNoYXJbXeKAmSIKICAgIHByaW50ZigiY2hhcltdIHZpYSB3cmFwcGVyOiAlenVcbiIsIHNpemVvZl93cmFwcGVyKG0ubXNnLmxvZy5zdHJpbmcpKTsKICAgIHJldHVybiAwOwp9Cg==