#include <stdio.h>

struct {
    struct {
        struct {
            char string[128];
            char *string_as_charpointer;
            char string_as_chararray[];
        } log;
    } 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;
}
