Skip to content

Instantly share code, notes, and snippets.

@spoorcc
Created January 10, 2017 16:01
Show Gist options
  • Save spoorcc/c168d96eeac9442924cfa6ec8ac1858b to your computer and use it in GitHub Desktop.
Save spoorcc/c168d96eeac9442924cfa6ec8ac1858b to your computer and use it in GitHub Desktop.
Build error string
#include <stdio.h>
struct my_string_t {
uint8_t len;
// char string[];
// const char string[];
char string[128];
// const char * const string;
};
#define STRING(_string) {.len=sizeof(_string), .string=(_string)}
int main(void)
{
struct my_string_t my_string_list[] = {STRING("Hello")};
fprintf(stderr, "%s\n", my_string_list[0].string);
return 0;
}
@spoorcc
Copy link
Author

spoorcc commented Jan 10, 2017

When compiled with char string[] following build error:

$ gcc main.c
main.c: In function ‘main’:
main.c:11:56: error: non-static initialization of a flexible array member
 #define STRING(_string) {.len=sizeof(_string), .string=(_string)}
                                                        ^
main.c:15:44: note: in expansion of macro ‘STRING’
     struct my_string_t my_string_list[] = {STRING("Hello")};
                                            ^
main.c:11:56: note: (near initialization for ‘my_string_list[0]’)
 #define STRING(_string) {.len=sizeof(_string), .string=(_string)}
                                                        ^
main.c:15:44: note: in expansion of macro ‘STRING’
     struct my_string_t my_string_list[] = {STRING("Hello")};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment