title: Error "initializer element is not constant" when trying to initialize variable with const
body: <p>I get an error on line 6 (initialize my_foo to foo_init) of the following program and I'm not sure I understand why.</p>
  
  <pre><code>typedef struct foo_t {
      int a, b, c;
  } foo_t;
  
  const foo_t foo_init = { 1, 2, 3 };
  foo_t my_foo = foo_init;
  
  int main()
  {
      return 0;
  }
  </code></pre>
  
  <p>Keep in mind this is a simplified version of a larger, multi-file project I'm working on.  The goal was to have a single constant in the object file, that multiple files could use to initialize a state structure.  Since it's an embedded target with limited resources and the struct isn't that small, I don't want multiple copies of the source.  I'd prefer not to use:</p>
  
  <pre><code>#define foo_init { 1, 2, 3 }
  </code></pre>
  
  <p>I'm also trying to write portable code, so I need a solution that's valid C89 or C99.</p>
  
  <p>Does this have to do with the ORGs in an object file?  That initialized variables go into one ORG and are initialized by copying the contents of a second ORG?</p>
  
  <p>Maybe I'll just need to change my tactic, and have an initializing function do all of the copies at startup.  Unless there are other ideas out there?</p>